gpt4 book ai didi

jenkins - Docker 中的 Docker 权限错误

转载 作者:IT老高 更新时间:2023-10-28 12:43:56 25 4
gpt4 key购买 nike

我在 CI 的 docker setup 中有一个 docker。本质上,这台机器上有一个 jenkins CI 服务器,它使用相同的机器 docker 套接字为 CI 创建节点。

这一直很好,直到我最近更新了 docker。我已经确定了这个问题,但我似乎无法找出正确的魔法来让它发挥作用。

host $ docker exec -it myjenkins bash
jenkins@container $ 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.26/containers/json: dial unix /var/run/docker.sock: connect: permission denied

host $ docker exec -it -u root -it myjenkins bash
root@container $ docker ps
... docker ps from host container yay! ...

所以这就是我的猜测。我可以从容器内访问主机 docker 套接字,但我似乎无法向 jenkins 用户授予权限。

我已经添加了 docker 组,还将 jenkins 用户添加到了 docker 组。但我仍然得到同样的错误。我已经重新开始了很多次,所以我有点不知所措。

有没有办法强制用户在特定套接字上获得权限?

最佳答案

您需要将主机上 docker 组的 gid 映射到容器内 jenkins 所属的组的 gid。这是我的 Dockerfile 中的一个示例,说明了我是如何构建 jenkins 从属镜像的:

ARG DOCKER_GID=993

RUN groupadd -g ${DOCKER_GID} docker \
&& curl -sSL https://get.docker.com/ | sh \
&& apt-get -q autoremove \
&& apt-get -q clean -y \
&& rm -rf /var/lib/apt/lists/* /var/cache/apt/*.bin

RUN useradd -m -d /home/jenkins -s /bin/sh jenkins \
&& usermod -aG docker jenkins

在本例中,993 恰好是主机上 docker 的 gid,您可以对其进行调整以匹配您的环境。


来自 OP 的解决方案:如果无法重建,您可以使用 root 相应地设置 docker 组并添加用户。如果您之前尝试过此操作,则可能必须删除从属设备上的组(groupdel docker):

docker exec -it -u root myjenkins bash
container $ groupadd -g 993 docker
container $ usermod -aG docker jenkins

关于jenkins - Docker 中的 Docker 权限错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42164653/

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