Macos 容器中的Docker套接字权限

Macos 容器中的Docker套接字权限,macos,docker,dockerfile,docker-volume,Macos,Docker,Dockerfile,Docker Volume,我试图从容器中的用户访问主机上运行的docker。我试图通过将主机上的套接字映射到容器卷docker run-it-v/var/run/docker.sock:/var/run/docker.sock myimage bash 在我的主机上,ls-lon/var/run/docker.sock显示所有者是我的普通主机用户(不是root),但当我查看容器时,它是root所有的。因此,在尝试连接到容器内的docker时,我会得到“权限被拒绝”。这是一个示例图像 FROM ubuntu:latest

我试图从容器中的用户访问主机上运行的docker。我试图通过将主机上的套接字映射到容器卷
docker run-it-v/var/run/docker.sock:/var/run/docker.sock myimage bash

在我的主机上,
ls-l
on/var/run/docker.sock显示所有者是我的普通主机用户(不是root),但当我查看容器时,它是root所有的。因此,在尝试连接到容器内的docker时,我会得到“权限被拒绝”。这是一个示例图像

FROM ubuntu:latest
USER root

RUN apt-get update -y && apt-get upgrade -y \
    && apt-get install -y python python-dev python3.6 python-pip 
virtualenv libssl-dev libpq-dev git build-essential libfontconfig1 
libfontconfig1-dev
RUN pip install setuptools docker


RUN useradd -ms /bin/bash -d /usr/local/myuser myuser
RUN chown -R myuser: /usr/local/myuser
USER myuser
树立形象

docker build-t myimage.

启动bashshell

docker run-it-v/var/run/docker.sock:/var/run/docker.sock myimage bash

例如,尝试通过python进行连接

python -c "import docker; c = docker.from_env(); c.containers.list()
给出一个权限被拒绝的错误

如何映射卷的正确权限(以及为什么映射卷时权限会更改)?是否可以在Dockerfile或run命令中执行此操作(例如,我的实际应用程序正在使用docker compose)


我尝试在dockerfile中创建docker组并将myuser添加到组中,但这似乎不起作用,我不知道为什么,但可能是因为我在mac上,使用gui安装程序安装了docker

简单更改用户的UID

RUN useradd -ms /bin/bash -d /usr/local/myuser -u ${UID} myuser
可通过以下方式获取UID:

id 

在终端

中,权限仍然被拒绝。套接字仍然由容器中的root用户和主机上的my${UID}拥有它看起来像python docker在macos中不工作,您可以通过运行docker run-it-v/var/run/docker.sock:/var/run/docker.sock ddmitrii/support curl--unix socket/var/run/docker.sock来检查它