dockerコマンドをsudoの付与無しに実行できるようにする

OS: Ubuntu Server 18.04.1 LTS
docker: 18.09.0

dockerコマンドを打ち込む度にsudoを付加するのはしちめんどうな手続きであるけれどもrootユーザにスイッチして操作をするのも甚だしく物騒であるから、何らかの細工を施して一般ユーザでsudo無しにdockerコマンドを実行できれば大変楽ちんである。

けれども安全性を鑑みると無闇にdockerコマンドがsudo無しで実施できるようになるのはやはり大きな懸念材料となる模様である。せめて信頼のおけるユーザだけに許すなど細やかな配慮が求められる情勢であった。しちめんどうであるからといって横着してはいけないのである。

図1. dockerグループにrootと同等の権限が付与されている

そう云う事情をすべて飲み込んだうえで作業を進めてゆく。まず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

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください