在创建Jenkins Docker容器时,能够连接到Docker守护进程非常有用。这样,我就可以在Jenkins容器中启动docker命令。
例如,启动Jenkins容器后,我希望'docker -it容器-id bash‘并启动'docker’。
在Linux上,您可以使用/var/run/docker.sock上的绑定挂载。在Windows上,这似乎是不可能的。解决方案是使用“命名管道”。因此,在我的docker-compose.yml文件中,我尝试创建一个命名管道。
version: '2'
services:
jenkins:
image: jenkins-docker
build:
context: ./
dockerfile: Dockerfile_docker
ports:
- "8080:8080"
- "50000:50000"
networks:
- jenkins
volumes:
- jenkins_home:/var/jenkins_home
- \\.\pipe\docker_engine:\\.\pipe\docker_engine
# - /var/run/docker.sock:/var/run/docker.sock
# - /path/to/postgresql/data:/var/run/postgresql/data
# - etc.从这个文件开始停靠-撰写,我得到以下错误:
无法连接到unix://var/run/docker.sock上的Docker守护进程。码头守护进程正在运行吗?
如何设置坞-组合文件,以便在已启动的容器中使用docker.sock (或Docker)?
在Linux上,您可以使用卷: /var/run/docker.sock:/var/run/docker.sock。这在Windows环境中不起作用。当您将此文件夹(/var)添加到中时,它不会永远获得任何IP。在许多岗位上
发布于 2018-09-07 08:11:21
您可以在tcp://localhost:2375上公开守护进程,而不需要在设置中使用TLS。这样,您就可以配置Jenkins来使用Docker而不是套接字。我鼓励你读这篇由Nick Janetakis撰写的关于“理解Docker Daemon和Docker CLI如何协同工作”的文章。
还有几个用于Jenkins的Docker插件允许这种连接:

此外,您还可以在wiki.jenkins.io上的Docker插件文档中找到其他信息。
def dockerCloudParameters = [
connectTimeout: 3,
containerCapStr: '4',
credentialsId: '',
dockerHostname: '',
name: 'docker.local',
readTimeout: 60,
serverUrl: 'unix:///var/run/docker.sock', // <-- Replace here by the tcp address
version: ''
]编辑1:
我不知道它是否有用,但是根据C:\ProgramData\docker,Docker Daemon配置文档位于Docker Daemon配置文档上的Docker。
编辑2:
您需要显式地说容器才能使用host网络,因为您希望同时公开Jenkins和Docker。在这份文件之后,您只需向容器/服务添加--network=host (或docker-compose中的network_mode: 'host' )。有关更多信息,您可以阅读这篇文章来了解这种网络模式的用途。
https://stackoverflow.com/questions/52217900
复制相似问题