gpt4 book ai didi

docker - 如何从 Jenkins docker 容器内部使用 docker

转载 作者:行者123 更新时间:2023-12-02 01:45:27 25 4
gpt4 key购买 nike

我面临以下问题:我创建了一个 Jenkins docker 容器,并将主机上的 docker 套接字与该容器链接起来。像这样:

docker run -v /var/run/docker.sock:/var/run/docker.sock -p 8080:8080 -p 50000:50000 -d --name jenkins --restart unless-stopped jenkins

然后,当我尝试在 Jenkins 上创建一些工作时,我收到通常的“权限被拒绝”消息:

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.29/images/json: dial unix /var/run/docker.sock: connect: permission denied

但是,如果我附加到容器并使用 root 用户运行命令,则不会发生该问题。

我该如何解决这个问题?

我无法通过运行sudo gpasswd -a jenkins docker将jenkins用户添加到主机上的docker组(因为主机上没有jenkins用户,仅在容器中),我也无法在容器内运行此命令(因为容器不知道任何 docker 组)。关于如何解决这个问题有什么建议吗?

最佳答案

您可以在容器内添加 docker 组。在 bash 中执行此操作:

groupadd -g <docker-group-id> docker

找出<docker-group-id>在主机中运行:

ls -ln /var/run/docker.sock

然后将jenkins用户添加到docker组:

gpasswd -a jenkins docker
<小时/>

考虑这可能产生的任何安全问题:

Warning: The docker group grants privileges equivalent to the root user. For details on how this impacts security in your system, see Docker Daemon Attack Surface.

请参阅docs

关于docker - 如何从 Jenkins docker 容器内部使用 docker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45447434/

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