我正在尝试从容器中的用户访问在主机上运行的docker。我正在尝试通过将主机上的套接字映射到容器卷docker run -it -v /var/run/docker.sock:/var/run/docker.sock myimage bash
ls -l
上的显示所有者是我的普通主机用户(不是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 .
启动bash shell
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
答案 0 :(得分:0)
用户的简单更改UID,
Tuple
可以通过以下方式获取UID
RUN useradd -ms /bin/bash -d /usr/local/myuser -u ${UID} myuser
在终端