jenkins容器中使用docker
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jenkins容器中使用docker相关的知识,希望对你有一定的参考价值。
参考技术A 在项目中要使用jenkins实现自动化CI/CD功能,jenkins以docker容器方式运行,其中项目编译完要以docker方式构建image,上传到harbor私有仓库中。那jenkins容器中就要有docker运行环境以实现docker build images。我使用的官方的镜像文件 jenkins/jenkins:lts ,jenkins容器中是要以jenkins用户方式运行的。但宿主机host中的docker是以root所有的。
这是因为当前容器中是以jenkins用户在运行的,所以没有权限去访问/var/run/docker.sock。
可以看到容器中还是宿主机的权限模式,其中994是宿主机的docker的GID
宿主机的docker GID查看
为了验证这个问题,可以把jenkins容器以root用户方式去运行。
可以看到以root方式运行,是可以成功执行docker info命令的,这说明可以在jenkins容器中运行了。
docker-jenkins-test镜像Dockerfile如下:
在参考其他几种jenkins with docker的实现方式:
How can i run docker command inside a docker container?
A jenkins capable of running docker agents using docker engine of host.
Use docker inside docker with jenkins user 里面有各种实现方式,但我试验过了,在不改变宿主机/var/run/docker.sock权限的情况,都没有成功过。
最简单的,就是在容器中不jenkins用户运行。
The simple way to run Docker-in-Docker for CI 跟这个仁兄实现方法类似,以root用户去运行,手工安装docker,再挂载宿主机/var/run/docker.sock。
启动容器
运行情况:
这个jenkins容器中docker info跟宿主机的docker info是一样的。
以上是关于jenkins容器中使用docker的主要内容,如果未能解决你的问题,请参考以下文章