2

在 Docker for Mac 的 vanilla 安装中,我docker.sock的所有者是我的本地用户:

$ stat -c "%U:%G" /var/run/docker.sock

juliano:staff

即使我在我Dockerfile的.docker.sockroot: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 内的套接字?
4

1 回答 1

1

我相信,当您安装卷时,所有者 UID/GID 设置为与主机中的相同(--user 标志仅允许您将命令作为特定的 UID/GID 运行并且它没有影响关于已安装卷的权限)

主要问题是 - 你为什么需要 chown?你不能以root身份运行容器内的命令吗?

于 2019-06-17T09:36:21.807 回答