Public

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

※本記事には広告・アフィリエイトリンクが含まれます

Docker
前菜Tech 前菜Tech committed 502ef76

一度行えば、その後は意識せずとも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

スポンサーリンク
スポンサーリンク
★ この記事をXでシェア はてなブックマーク
関連記事