下面是这里采取jenkins image的代码片段:

# Install Docker Engine
RUN apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D && \
    echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" | tee /etc/apt/sources.list.d/docker.list && \
    apt-get update -y && \
    apt-get purge lxc-docker* -y && \
    apt-get install docker-engine=${DOCKER_ENGINE:-1.10.2}-0~trusty -y && \
    usermod -aG docker jenkins && \
    usermod -aG users jenkins

它安装jenkins image内docker引擎。我的理解是,var/run/docker.sock创建withing Jenkins容器,由于安装docker引擎。


下面是从这里截取的卷映射语法:

volumes:
  - jenkins_home:/var/jenkins_home
  - /var/run/docker.sock:/var/run/docker.sock

一个启动EC2主机上jenkins container(above)。

EC2主机也有docker后台程序。

因此,有在EC2主机运行docker守护进程。还有docker container(Jenkins)内运行的docker守护


有了这个syntax(/var/run/docker.sock:/var/run/docker.sock)在docker-compose(above)套接字文件,

是否Jenkins容器内docker守护覆盖与目前在EC2主机套接字文件自身的套接字文件?如果是...是什么启示?

分析解答

文档

Docker-engine is a client-server application

请注意,当您安装docker-engine安装docker-daemon (server)和docker CLI (client)。

这意味着,如果一个docker守护程序没有运行,你仍然可以运行docker CLI命令:

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

Jenkins image您共享没有说明运行docker引擎。所以,我认为这不是在容器内运行。

/var/run/docker.sock:/var/run/docker.sockdocker主机的docker引擎插槽映射到容器中。

因此,容器内运行docker CLI命令控制docker主机上运行的docker-engine。

这是有道理的,如果你从集装箱内Jenkins主机上做CI/CD。

Jenkins管道可以使用泊坞窗,docker-compose和docker群命令来运行测试,建立文物和部署应用程序的新版本。