dockerコマンドをsudoなしで実行できるようにする

一度行えば、その後は意識せずともsudoなしで実行できるために、
新たに作った環境でやろうとするときに毎回調べてるような気がするので、メモしておく

環境

私の環境はこちらです

$ cat /etc/os-release
NAME="Ubuntu"
VERSION="16.04.6 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.6 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial

そもそもなぜsudoが必要なのか

The Docker daemon binds to a Unix socket instead of a TCP port. By default that Unix socket is owned by the user root and other users can only access it using sudo. The Docker daemon always runs as the root user.

https://docs.docker.com/install/linux/linux-postinstall/

Google先生にお願いして訳すと、

Dockerデーモンは、TCPポートではなくUnixソケットにバインドします。 デフォルトでは、Unixソケットはユーザーrootによって所有され、他のユーザーはsudoを使用してのみアクセスできます。 Dockerデーモンは常にrootユーザーとして実行されます。

とのことです
正直よくわかりませんが、dockerの操作には常にroot権限が必要とのことですね

本題

本題です
sudoなしで実行できるようにします

# dockerグループを作る
$ sudo groupadd docker
# dockerを操作するユーザ(ここでは今のユーザ)をdockerグループに所属させる
$ sudo gpasswd -a $USER docker
# dockerデーモンを再起動する
$ sudo restart docker
# 再ログインすると反映される
$ exit

これは、dockerグループにsudoと同等の権限を与えることになります
そのことによる注意点は、こちらをご確認ください

docs.docker.com

タイトルとURLをコピーしました