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的主要内容,如果未能解决你的问题,请参考以下文章

沙雕的git Plugin

在 Jenkins Docker 代理中使用测试容器:容器无法启动,NoRouteToHostException

在 Jenkins Pipeline 中访问本地运行的容器

Jenkins 在 docker 容器中构建并生成报告

从jenkins docker ecs容器中访问ecr图像

在容器中运行 Jenkins pipeline 任务