在Windows上,如果你想让运行在容器内的Jenkins调用Docker命令,一种可行的方法是使用Windows Subsystem for Linux (WSL)和Docker Desktop。
首先,确保你的系统已经安装了WSL和Docker Desktop。然后,按照以下步骤进行配置:
- 打开Docker Desktop,并确保它正在运行。
- 打开WSL终端。
- 创建一个新的目录,用于挂载Docker的宿主目录。例如:
mkdir ~/docker-host
- 在Docker Desktop中,打开“Docker Engine”设置,并找到“File sharing”部分。将刚刚创建的目录添加到共享列表中。
- 重启Docker Desktop。
- 在WSL终端中,创建一个新的Docker容器,并挂载刚刚创建的目录到容器的
/var/run/docker.sock
路径。例如:
docker run -it --name jenkins-container -v ~/docker-host:/var/run/docker.sock jenkins/jenkins:lts
这将创建一个名为jenkins-container
的容器,并将宿主机的~/docker-host
目录挂载到容器的/var/run/docker.sock
路径。
- 现在,你可以在容器内的Jenkins中调用Docker命令了。
请注意,这种方法依赖于WSL和Docker Desktop,并且可能需要根据你的具体需求进行适当的调整。
该问题已解决。
Windows下也可使用docker in docker的方案。
Windows下的docker和Linux的配置略有不同。
该配置导致的区别是在WSL系统中是否可以直接执行docker命令,并且具有docker相关的目录。
此处开启后,即可使用-v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker这种挂载卷的参数来让容器访问宿主机的docker命令。
即增加挂载-v /usr/bin/com.docker.cli:/usr/bin/com.docker.cli
完成以上两个配置可以在Windows下的docker中允许Jenkins,同时Jenkins中也可以执行宿主机的docker命令,目前看此种方式没有任何权限问题