Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 东道主乔宁';容器内绑定的'docker.sock'会打断主机docker_Macos_Docker_Ubuntu_Docker In Docker - Fatal编程技术网

Macos 东道主乔宁';容器内绑定的'docker.sock'会打断主机docker

Macos 东道主乔宁';容器内绑定的'docker.sock'会打断主机docker,macos,docker,ubuntu,docker-in-docker,Macos,Docker,Ubuntu,Docker In Docker,在Mac Docker的普通安装中,我的Docker.sock归我的本地用户所有: $stat-c“%U:%G”/var/run/docker.sock 朱莉亚诺:工作人员 即使我在我的Dockerfile上添加了用户和组,当尝试以我的身份运行DinD时,docker.sock的装载也是使用root:root创建的 $docker run-it--rm\ --卷/var/run/docker.sock:/var/run/docker.sock\ --组添加工作人员\ --用户$(id-u):$

在Mac Docker的普通安装中,我的
Docker.sock
归我的本地用户所有:

$stat-c“%U:%G”/var/run/docker.sock
朱莉亚诺:工作人员
即使我在我的
Dockerfile
上添加了用户和组,当尝试以我的身份运行DinD时,
docker.sock
的装载也是使用
root:root
创建的

$docker run-it--rm\
--卷/var/run/docker.sock:/var/run/docker.sock\
--组添加工作人员\
--用户$(id-u):$(id-g)\
“您的平均容器:最新”\
/bin/bash-c'ls-l/var/run/docker.sock'
srw rw----1根根目录0 Jun 17 07:34/var/run/docker.sock
另一方面,以root用户身份运行DinD,
chown
ing套接字,然后运行命令中断主机docker

$docker run-it--rm\
--卷/var/run/docker.sock:/var/run/docker.sock\
--组添加工作人员\
“您的平均容器:最新”\
/bin/bash
$chown juliano:staff/var/run/docker.sock
$sudo su juliano
$docker ps
[一些有效的docker输出]
$exit
$docker ps
守护进程的错误响应:Docker引擎的错误响应
我认为报道周宁是一种方式,所以也许我做错了什么

问题:

  • 为什么主站码头工人会罢工
  • 是否有某种方法可以防止主机docker中断并仍然向docker内的套接字授予我的用户权限

我相信,当您装载卷时,所有者UID/GID设置为与主机中相同的值(--user标志只允许您以特定UID/GID运行命令,并且不会影响装载卷的权限)


主要的问题是-你为什么需要吃东西?您不能以root用户身份在容器中运行命令吗

1)抱歉,没有,正如我在问题中所示,UID/GID在装载时设置为root:root。2) 原因:如果我以root身份将文件写入卷,它们将以root身份写入原始文件系统,从而阻止我在docker进程和非docker进程之间共享可写资源。1)让我进一步澄清。我认为我看到的行为是Docker for Mac特有的。我刚刚在Ubuntu中测试了这一点,在安装时,所有权确实得到了落实。我想这可能是由于Ubuntu中的CGroup与Mac上的虚拟化相比。我确实需要支持这两种平台。我刚刚测试了在已装入卷中创建的文件的所有权,这就是我的经验:当您将卷装入容器时,容器中文件夹的所有者将是您使用--user标志分配的用户。当您从主机文件系统中的容器在该文件夹中创建文件时,该文件将由docker.sock所有者的用户所有,但问题仍然存在-您在容器中使用docker.sock的实际需要是什么?如果你能提供一个具体的例子,说明什么是不起作用的,我可能会进行测试,看看潜在的问题可能是所有权测试:我在这里看到的是所有权与行为的混合。在macos中,无论--user如何,我的docker.sock都会被装载为root所有。我的应用程序文件夹以--user作为所有者装载。