我在docker中运行https://hub.docker.com/r/jenkinsci/blueocean/。尝试在jenkins中构建docker映像。
但我得到以下错误:
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
Run Code Online (Sandbox Code Playgroud)
显然,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?
Run Code Online (Sandbox Code Playgroud)
“ db4292380977”是正在运行的容器。它显示相同的错误。
题:
泊坞窗客户端已安装在jenkinsci/blueocean映像上,但未安装在守护程序上。Docker客户端将使用守护程序(默认情况下通过socket unix:///var/run/docker.sock)。Docker客户端需要一个Docker守护程序才能工作,您可以阅读Docker Architecture以获得更多信息。
你可以做什么:
库Docker映像提供了一种在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
Run Code Online (Sandbox Code Playgroud)
Docker守护程序在docker-dind容器中运行,并且可以使用相同的主机名进行访问。您只需要为Docker客户端提供守护程序主机(-H docker-dind在示例中,您还可以使用doc中DOCKER_HOST所述的env变量)。
/var/run/docker.sock在容器中如@Herman Garcia所述,答案:
docker run -p 8080:8080 --user root \
-v /var/run/docker.sock:/var/run/docker.sock jenkinsci/blueocean
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3008 次 |
| 最近记录: |