背景:
在做用Jenkins构建docker的操作,需要用Jenkins调用docker命令,需要先安装docker-build-step插件,然后开启docker远程访问。
默认情况下,Docker守护进程会生成一个socket(/var/run/docker.sock)文件来进行本地进程通信,而不会监听任何端口,因此只能在本地使用docker客户端或者使用Docker API进行操作。
如果想在其他主机上操作Docker主机,就需要让Docker守护进程监听一个端口,这样才能实现远程通信。
方法
永久开启远程访问和本地访问(亲测有效)
进入/etc/systemd/system/目录
$ cd /etc/systemd/system/
查找docker.service文件
# 在/etc/systemd/system目录下查找docker.service文件
$ find /etc/systemd/system -name docker.service
docker.service文件路径:
Ubuntu : /etc/systemd/system/multi-user.target.wants/docker.service
centos : /usr/lib/systemd/system/docker.service
打开docker.service文件
vim docker.service
注释掉:ExecStart=/usr/bin/dockerd -H fd://
添加:ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
保存Docker.service文件
刷新配置
$ sudo systemctl daemon-reload
重新启动Docker守护进程
$ sudo systemctl restart docker
确认是否重启成功
$ sudo ps -ef | grep docker
or
$ sudo ps -A|grep docker
测试Docker远程通讯是否成功开启
Docker客户端校验
浏览器访问:http://Docker服务器IP:2375/info
Docker服务器校验远程访问
docker -H tcp://localhost:2375 images
或
docker -H tcp://127.0.0.1:2375 images
或
docker -H tcp://Docker服务器IP:2375 images
Docker服务器校验本地访问
docker info
最后在Jenkins的系统设置中添加 tcp://docker主机地址:2375 ,Test Connection一下,成功连接