gpt4 book ai didi

macos - 以非 root 用户身份从 Docker Ubuntu 容器内部调用 Mac 主机上的 Docker 时出现权限被拒绝错误

转载 作者:行者123 更新时间:2023-12-02 19:33:00 28 4
gpt4 key购买 nike

我正在尝试从正在运行的 jenkins docker 容器 ( jenkins:latest ) 内部调用运行 Docker for Mac 17.06.0-ce-mac17 的 OSX 主机上的 docker,按照 http://jpetazzo.github.io/2015/09/03/do-not-use-docker-in-docker-for-ci/ 中描述的过程。 。

我将/var/run/docker.sock 挂载到容器中,在其中粘贴了 ubuntu docker 二进制文件,并且它能够执行 - 但是当我运行例如时,从容器内部以用户“jenkins”身份执行“docker ps”我明白

Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.30/containers/json?all=1: dial unix /var/run/docker.sock: connect: permission denied.  

如果我以 root 身份连接到容器(docker exec -u 0),它仍然可以工作。

我需要 jenkins 用户才能运行它。我尝试添加一个 docker 组并在 ubuntu 容器内添加 jenkins,但这没有帮助,因为它与外部无关,而且 Docker for Mac 不像在 Linux 上运行它那样工作,你可以做半简单的事情uid/gid 匹配。我想分发这个容器,所以 go and hack 我的 Docker for Mac 安装部分的答案并不能真正帮助我。如果可以的话,我宁愿不以 root 身份运行整个 Jenkins 设置。 (我还尝试以特权身份运行容器,但这没有帮助。)

根据 Permission Denied while trying to connect to Docker Daemon while running Jenkins pipeline in Macbook 中的建议我手动将容器内的/var/run/docker.sock 文件添加到 jenkins 中,现在 jenkins 可以运行 docker 了。但我在想出可分发容器的解决方案时遇到了困难 - 我无法在 Dockerfile 中执行该操作,因为该文件尚不存在,并且插入入口点也无济于事,因为它作为 jenkins 运行.

我需要做什么才能构建和运行一个镜像,该镜像将以非根用户身份从容器内部在我的 Mac 上运行外部 docker 容器?

最佳答案

按照此操作:https://forums.docker.com/t/mounting-using-var-run-docker-sock-in-a-container-not-running-as-root/34390

基本上,您需要做的就是更改容器内的 /var/run/docker.sock 权限并使用 sudo 运行 docker。

我创建了一个可用于提供帮助的 Dockerfile:

FROM jenkinsci/blueocean:latest

USER root
# change docker sock permissions after moutn
RUN if [ -e /var/run/docker.sock ]; then chown jenkins:jenkins /var/run/docker.sock; fi

关于macos - 以非 root 用户身份从 Docker Ubuntu 容器内部调用 Mac 主机上的 Docker 时出现权限被拒绝错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44999000/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com