RSH*_*HAP 5 macos docker dockerfile docker-volume
我正在尝试从容器内的用户访问在我的主机上运行的 docker。我尝试通过将主机上的套接字映射到容器卷来做到这一点docker run -it -v /var/run/docker.sock:/var/run/docker.sock myimage bash
在我的主机ls -l上 /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
Run Code Online (Sandbox Code Playgroud)
建立形象
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()
Run Code Online (Sandbox Code Playgroud)
给出权限被拒绝错误。
如何映射卷的正确权限(以及为什么映射卷时它们会发生变化)?是否可以在 Dockerfile 或运行命令中执行此操作(例如,我的实际应用程序正在使用 docker-compose)。
我尝试在 dockerfile 中创建一个 docker 组并将 myuser 添加到该组,但这似乎不起作用,我不确定为什么,但可能是因为我在 mac 上并使用 gui 安装程序安装了 docker
简单更改用户的UID,
RUN useradd -ms /bin/bash -d /usr/local/myuser -u ${UID} myuser
Run Code Online (Sandbox Code Playgroud)
可以通过以下方式获取 UID
id
Run Code Online (Sandbox Code Playgroud)
在终端
| 归档时间: |
|
| 查看次数: |
2876 次 |
| 最近记录: |