2017-03-17 121 views
0

使用docker compose我啓動了一個jenkins容器,我希望能夠執行docker命令(在服務器上安裝docker)。在jenkins中執行docker命令(在docker容器中)

但是,當我試圖做一個簡單的測試運行你好世界圖像,我有以下錯誤:

docker: Cannot connect to the Docker daemon. Is the docker daemon running on this host?.

我設置泊塢窗組的用戶,這有什麼錯我的搬運工撰寫的文件嗎? 在其他崗位我看看我加入這一行:

/var/run/docker.sock:/var/run/docker.sock 

我與詹金斯可以與碼頭工人溝通容器

我的搬運工撰寫文件

jenkins: 
    image: jenkins:2.32.3 
    ports: 
    - 8088:8080 
    - 50000:50000 

    volumes: 
    - /home/my-user-name/docker-jenkins/jenkins_home:/var/jenkins_home 
    - /var/run/docker.sock:/var/run/docker.sock 
    - /usr/bin/docker:/usr/bin/docker 
    - /tmp:/tmp 

回答

1

要訪問docker.sock文件,您必須以具有文件系統訪問權的用戶身份運行,才能讀取和寫入此套接字。默認情況下,這與主機系統上的root用戶和/或docker組一起使用。

將此文件裝入容器時,該裝載對文件保持相同的uid/gid權限,但這些ID可能會映射到容器內的不同用戶。因此,您應該在容器內創建一個組作爲Dockerfile的一部分,該Dockerfile映射到主機上存在的同一個gid,並將您的jenkins用戶分配給該組,以便它可以訪問docker.sock。這裏有一個來自Dockerfile的例子,我這​​樣做:

... 
ARG DOCKER_GID=993 
RUN groupadd -g ${DOCKER_GID} docker \ 
&& useradd -m -d /home/jenkins -s /bin/sh jenkins \ 
&& usermod -aG docker jenkins 
... 

在上面的例子中,993是我的主機上的docker gid。

相關問題