jenkins☞从容器中访问宿主机docker命令

阅读量: zyh 2020-06-09 17:24:44
Categories: > Tags:

💥💥💥💥💥💥💥💥💥💥

不太推荐

💥💥💥💥💥💥💥💥💥💥

前言

我的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 命令,需要在每次变更容器镜像后,重新执行,因为命令的相关结果都是容器内数据,清理后不会保留。