Macos 容器中的Docker套接字权限
我试图从容器中的用户访问主机上运行的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 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来检查它