2017-03-17 124 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。

相关问题