docker 进入容器内部后的命令_从Jenkins容器内部执行宿主机的docker命令

前提条件,docker开启RESTful API 操作Docker的守护进程:

1、在vim/usr/lib/systemd/system/docker.service中添加如下参数

ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

2、重启docker

systemctl restart docker

3、执行curl命令测试

curl -v -X GET localhost:2375/_ping

如果使用docker容器部署的Jenkins,要在Jenkins中执行docker build 等命令,有三种方式:

第一:安装Docker-build-step插件。但是如果是Jenkins pipeline脚本就不行了。

第三:把宿主的docker命令共享给容器内部使用,。

网上大部分方案都是采用第三种方式,这里也主要说下第三种方式的一些注意事项,避免采坑。

因为官网Jenkins镜像是以Jenkins用户运行的,所以正常共享unix文件以后,运行会提示权限不足,网上有些方案是以root用户运行Jenkins。

还有一种方式是创建一个docker用户组:

docker run -it -p 80:8080 -d \

-v /var/run/docker.sock:/var/run/docker.sock

-v /usr/bin/docker:/bin/docker

-v /usr/lib64/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7

-v /var/jenkins_home:/var/jenkins_home

--name jenkins

--group-add=$(stat -c %g /var/run/docker.sock)

jenkins/jenkins:lts

如果是docker-compose运行不支持–group-add指令,需要重新build一下官网的镜像,Dockerfile如下:

FROM jenkins/jenkins:lts

USER root

#gid=stat -c %g /var/run/docker.sock

RUN groupadd -g 994 docker &&\

usermod -a -G docker jenkins

USER jenkins

然后执行docker build -t www.amd5.cn/jenkins:lts .

docker-compose引用新构建的镜像,运行测试docker命令即可(亲测100%正常)。

version: '3'

services:

jenkins:

image: www.amd5.cn/jenkins:lts

container_name: jenkins

restart: always

ports:

- '80:8080'

volumes:

- '/var/jenkins_home:/var/jenkins_home'

- '/etc/localtime:/etc/localtime'

- '/var/run/docker.sock:/var/run/docker.sock'

- '/usr/bin/docker:/bin/docker'

- '/usr/lib64/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7'

environment:

- "JAVA_OPTS=-Duser.timezone=Asia/Shanghai -Xms2048m -Xmx2048m -Xmn512m"

喜欢 (0)or分享 (0)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值