在 Docker for Mac 的 vanilla 安装中,我docker.sock
的所有者是我的本地用户:
$ stat -c "%U:%G" /var/run/docker.sock
juliano:staff
即使我在我Dockerfile
的.docker.sock
root:root
$ docker run -it --rm \
--volume /var/run/docker.sock:/var/run/docker.sock \
--group-add staff \
--user $(id -u):$(id -g) \
"your-average-container:latest" \
/bin/bash -c 'ls -l /var/run/docker.sock'
srw-rw---- 1 root root 0 Jun 17 07:34 /var/run/docker.sock
换一种方式,以 root 身份运行 DinD,chown
插入套接字,然后运行命令会破坏主机 docker。
$ docker run -it --rm \
--volume /var/run/docker.sock:/var/run/docker.sock \
--group-add staff \
"your-average-container:latest" \
/bin/bash
$ chown juliano:staff /var/run/docker.sock
$ sudo su juliano
$ docker ps
[some valid docker output]
$ exit
$ docker ps
Error response from daemon: Bad response from Docker engine
我已经看到人们报告 chowning 是要走的路,所以也许我做错了什么。
问题:
- 为什么主机 docker 坏了?
- 有什么方法可以防止主机 docker 中断并且仍然允许我的用户访问 docker 内的套接字?