簡體   English   中英

docker中的jenkins-無法通過unix:///var/run/docker.sock連接到Docker守護程序。 泊塢窗守護程序正在運行嗎?

[英]jenkins in docker - Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

我在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?

顯然,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?

jenkinsci/blueocean客戶端安裝在jenkinsci/blueocean映像上,但未安裝在守護程序上。 Docker客戶端將使用守護程序(默認情況下通過套接字unix:///var/run/docker.sock )。 Docker客戶端需要一個Docker守護程序才能工作,您可以閱讀Docker Architecture以獲得更多信息。

你可以做什么:

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

庫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

Docker守護程序在docker-dind容器中運行,並且可以使用相同的主機名進行訪問。 您只需要為-H docker-dind客戶端提供守護程序主機(在示例中為-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

您需要掛載本地/var/run/docker.sock並以root用戶身份運行容器

注意:這可能是一個安全漏洞,因此請小心誰可以訪問jenkins容器

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

您將能夠在容器內執行docker

➜  ~  docker exec -it gracious_agnesi bash                                                                                              
bash-4.4# docker ps                                                                                                                     
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS                        
       NAMES                                                                                                                            
c4dc85b0d88c        jenkinsci/blueocean   "/sbin/tini -- /usr/…"   18 seconds ago      Up 16 seconds       0.0.0.0:8080->8080/tcp, 50000
/tcp   gracious_agnesi

只是嘗試嘗試執行相同的命令,但在開頭使用sudo

例如

sudo docker images
sudo docker exec -it db4292380977 bash

為了避免將來使用sudo,您應該在Unix OS中運行此命令

sudo usermod -aG docker <your-user>

更改當前正在使用的用戶。 請記住注銷並重新登錄才能生效! 有關Docker安裝的更多信息,請單擊此處

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

相關問題 Jenkins 無法連接到 unix:///var/run/docker.sock 上的 Docker 守護進程。 docker 守護進程是否正在運行? docker:無法連接到unix:///var/run/docker.sock上的Docker守護程序。 docker守護程序是否正在運行? docker-compose | 無法連接到 unix:///var/run/docker.sock 上的 Docker 守護進程。 docker 守護進程是否正在運行? docker:無法連接到位於 unix:///var/run/docker.sock 的 Docker 守護進程。 docker 守護程序是否正在運行? docker compose in bitbucket - 無法連接到 unix:///var/run/docker.sock 上的 Docker 守護進程。 docker 守護進程是否正在運行? macOS - docker:無法連接到 unix:///var/run/docker.sock 的 Docker 守護程序。 docker 守護程序是否正在運行? 在 docker 容器上運行 Jenkins。無法連接到 unix:///var/run/docker.sock 上的 Docker 守護進程。 docker 守護進程是否正在運行? "<i>ERROR :Cannot connect to the Docker daemon at unix:\/\/\/var\/run\/docker.sock.<\/i>錯誤:無法連接到 unix:\/\/\/var\/run\/docker.sock 上的 Docker 守護程序。<\/b> <i>Is the docker daemon running<\/i> docker 守護進程是否正在運行<\/b>" CentOS 7 - 無法連接到 unix:///var/run/docker.sock 處的 Docker 守護程序。 docker 守護程序是否正在運行? 如何修復錯誤“無法連接到 unix:///var/run/docker.sock 的 Docker 守護程序。 docker 守護程序是否正在運行”
 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM