OS: Ubuntu Server 18.04.1 LTS
docker: 18.09.0
dockerコマンドを打ち込む度にsudoを付加するのはしちめんどうな手続きであるけれどもrootユーザにスイッチして操作をするのも甚だしく物騒であるから、何らかの細工を施して一般ユーザでsudo無しにdockerコマンドを実行できれば大変楽ちんである。
けれども安全性を鑑みると無闇にdockerコマンドがsudo無しで実施できるようになるのはやはり大きな懸念材料となる模様である。せめて信頼のおけるユーザだけに許すなど細やかな配慮が求められる情勢であった。しちめんどうであるからといって横着してはいけないのである。
そう云う事情をすべて飲み込んだうえで作業を進めてゆく。まずdockerコマンドをsudo無しで実施するとエラーメッセージが現れて直ちに処理が終いとなる。
$ docker images Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.39/images/json: dial unix /var/run/docker.sock: connect: permission denied
メッセージから察するに /var/run/docker.sock
なるUNIXドメインソケットに対するアクセスが認められていない模様である。ファイルのパーミッションは果たしてどういう具合なのかを確認するとこうである。
$ ls -l /var/run/docker.sock
srw-rw---- 1 root docker 0 Dec 30 10:05 /var/run/docker.sock
docker.sockに対して読み書きが許されるのはrootユーザとdockerグループに所属する者という風に認められる。rootユーザにスイッチする心積もりがなければdockerグループに所属すればよいのである。説明書には先ずdockerグループを作成なさいとあるけれどもdocker-ceインストール時に併せて作成された風情であった。
$ getent group docker docker:x:999:
したがって作業はgpasswdでもってdockerグループへ所属させるばかりである。
$ id guro uid=1000(guro) gid=1000(guro) groups=1000(guro),(snip) $ sudo gpasswd -a guro docker Adding user guro to group docker $ id guro uid=1000(guro) gid=1000(guro) groups=1000(guro),(snip),999(docker)
dockerグループへ所属したら一度ログアウトして再ログインしてからdockerコマンドを実行するとこういう具合である。
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest 4ab4c602aa5e 3 months ago 1.84kB
sudoを付加することなくdockerコマンドが実行できるようになった。様々な事情によってdockerグループを脱退するのであればgpasswdの-dオプションに出動してもらってログアウト、再ログインで終いである。
$ sudo gpasswd -d guro docker Removing user guro from group docker