一度行えば、その後は意識せずとも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.
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と同等の権限を与えることになります
そのことによる注意点は、こちらをご確認ください