在适用于Mac的Docker的原始安装中,我的docker.sock
由我的本地用户拥有:
$ stat -c "%U:%G" /var/run/docker.sock
juliano:staff
即使我在Dockerfile
上添加了用户和组,当尝试以我的身份运行DinD时,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
我已经看到people报告称使用chowning是一种方式,所以也许我做错了事。
问题:
答案 0 :(得分:1)
我相信,在装入卷时,所有者UID / GID设置为与主机中的相同(--user标志只是允许您以特定的UID / GID身份运行命令,而不会会影响已安装卷的许可)
主要问题是-您为什么需要穿长袜?您不能仅以root用户身份运行容器内的命令吗?