💥💥💥💥💥💥💥💥💥💥
不太推荐
💥💥💥💥💥💥💥💥💥💥
前言
我的jenkins是运行在docker中,但是jenkins官方的镜像里却没有docker命令。
以至于无法在流水线中打包docker镜像。
方法
首先,需要将docker命令、docker.sock文件以及相关依赖文件映射到容器内。
其次,以root用户访问容器,在容器中添加docker组,并且组id需要和宿主机中的docker组id一致。
最后,以root用户访问容器,并将jenkins用户加入到容器中的docker组中。
最最后,最关键的来了, 一定要重启一下 jenkins 容器。。。
相关命令
# 额外的映射文件(宿主机文件和容器内的映射路径,以实际情况为准)
-v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker -v /usr/lib64/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7
# 以 root 用户访问 jenkins 容器(宿主机的组ID以实际情况为准)
docker exec -it -u root jenkins /bin/bash
groupadd -g xxx docker
usermod -aG docker jenkins
# 重启 jenkins 容器
docker stop jenkins && docker start jenkins
注意
在容器内执行的 groupadd 和 usermod 命令,需要在每次变更容器镜像后,重新执行,因为命令的相关结果都是容器内数据,清理后不会保留。