1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

dockerでdockerグループ以外のユーザにdockerを使わせる (dockerの実行権限グループの変更)

Last updated at Posted at 2019-01-22

注意

私はdocker2日程度の初心者です.ご注意ください. (追記2019/1/26:すでにコメントでいくつか指摘を頂きました. そちらもご覧ください)

また,訂正ありましたら,コメント,編集リクエスト,なんでもください.世に間違ったHowToをはびこらせたくないです.

訂正をコメントで頂くことができました。先にコメントを合わせて読まれることをオススメ致します

話の経緯

dockerを扱うとき,rootになるかdockerグループに所属させるのが通常ですが(ここにあるように色々あるみたいですが)そんなんめんどくさい.いままで使ってきたグループ設定をそのまま使って,例えば,hogeグループの人をあたかもdockerグループのように扱えないか探していました.

ググるとdockerの実行グループを変更するという記事を発見できましたが,これができない.daemon.jsondockerd -Gも何故かうまく行かない.

方法

僕の環境は
Ubuntu16.04
Docker version 18.09.1, build 4c52b90
です.

結論から述べるとdocker.socketを編集してください.
docker.socketのディレクトリはdocker.serviceと同じところにあるはずです.こちらを参考にしてください.

以下dockerグループの代わりにhogeグループを使う手順です.

sudo vim <docker.socketの場所> 
# うちのは/lib/systemd/system/docker.socketでした

以下のように書き換える

-SocketGroup=docker
+SocketGroup=<hogeのgid>

最後に再起動

sudo systemctl daemon-reload
sudo systemctl restart docker 

解説

どうしてこれでできるのか.

dockerの通信の仕組み
参考

そもそもdockerの操作はこの図にもあるように通常ホストOSからのアクセスであれば,Unixソケットを介して行われます.
dockerにアクセスする権限がないときに怒られるのは,このUnixソケットへのアクセス権がないからみたいです.

実際,/var/run/docker.socketを見てみてください.デフォルトではグループがdockerになっていると思います.だから,dockerグループでアクセスできたんですね.

本来このグループの設定はdaemon.jsondockerd -Gで変えられるはずですが(dokcer docs参考),ぼくの環境ではこれがどうしてかダメでした.

そこで,最終手段としてのdocker.socketの編集を試みたわけです.やってることは結局,みんな同じことを指してます.

感想

どうにも編集してるファイルが弄っちゃいけなさそうなファイルで怖い.でも,他がダメだったししょうがないと思っている.

1
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?