docker 容器中运行宿主机中的docker命令

  1. 最近在搞jenkins docker部署,遇到一个问题,在jenkins配置中执行docker version,发现构建失败,控制台报docker not found,jenkins是采用docker 镜像的方式运行的,想了想,应该报这个错,因为docker中无法执行docker命令,要想采用docker部署,应该解决,在docker中能够执行docker相关的创建容器的命令,这样的docker使用方法有背docker的初衷,我想应该在容器通过API的方式调用宿主机的API,然后解决该问题,但不知道,该问题,有没成熟的解决方案,不一定是我的思路,踩过这个坑的前辈,求分享
阅读 16.9k
2 个回答

刚踩过但我不是前辈,楼上那种单一挂载是不行的,需要在镜像构建时将jenkins用户加入到docker组里

ARG dockerGid=999
RUN echo "docker:x:${dockerGid}:jenkins" >> /etc/group 

我弄了个可以用jenkins用户运行docker的镜像,
直接拉取就可以用:

docker pull tomsun28/jenkins:1.1

运行:

docker run -d -p 8080:8080 -p 50000:50000 --name jenkins --restart=always \
-v /opt/dockerWorkspace/jenkins_home:/var/jenkins_home \
-v $(which docker):/usr/bin/docker \
-v /var/run/docker.sock:/var/run/docker.sock  tomsun28/jenkins:1.1

具体流程和构建的Dockerfile看这里哦 tomsun28
github

把这两个文件挂载到jenkins容器中,就可以执行docker命令了。

/var/run/docker.sock
/bin/docker
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏