gpt4 book ai didi

docker - docker 中的 jenkins - 无法连接到 unix :///var/run/docker. sock 上的 Docker 守护进程。 docker 守护进程是否正在运行?

转载 作者:行者123 更新时间:2023-12-02 18:43:54 25 4
gpt4 key购买 nike

我在跑 https://hub.docker.com/r/jenkinsci/blueocean/在 docker 。尝试在 jenkins 中构建 docker 镜像。

但我收到以下错误:

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

很明显,docker 中的 jenkins 版本无法访问 docker 二进制文件。

我确认了这一点,

docker exec -it db4292380977 bash
docker images
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

“db4292380977”是正在运行的容器。它显示相同的错误。

问题:

  • 如何允许访问 jenkins 容器中的 docker?

最佳答案

docker 客户端安装在 jenkinsci/blueocean 镜像上,但没有安装守护进程。 Docker 客户端将使用守护进程(默认通过套接字unix:///var/run/docker.sock)。 Docker 客户端需要 Docker 守护进程才能工作,您可以阅读 Docker Architecture了解更多信息。

你可以做什么:

使用 docker-in-docker (DinD) 镜像

Library Docker image提供了一种在 Docker 中运行 Docker 守护进程的方法,然后您可以从另一个容器中使用它。例如,使用普通的 docker CLI:

docker run --name docker-dind --privileged -d docker:stable-dind
docker run --name jenkins --link=docker-dind -d jenkinsci/blueocean
docker exec jenkins docker -H docker-dind images
REPOSITORY TAG IMAGE ID CREATED SIZE

Docker 守护进程在 docker-dind 容器中运行,可以使用相同的主机名访问。您只需要为 docker 客户端提供守护进程主机(示例中的 -H docker-dind,您也可以使用 DOCKER_HOST env 变量,如 the doc 中所述) .

在你的容器中挂载主机/var/run/docker.sock

@Herman Garcia 所述回答:

docker run -p 8080:8080 --user root \
-v /var/run/docker.sock:/var/run/docker.sock jenkinsci/blueocean

关于docker - docker 中的 jenkins - 无法连接到 unix :///var/run/docker. sock 上的 Docker 守护进程。 docker 守护进程是否正在运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55055488/

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