我的docker随笔10:docker客户端使用其它主机的docker服务器

我们使用的docker,都是在本机之内使用的,即docker服务端与客户端都有同一个机器,但是,有时候,需要在本机连接远程服务器的docker,本文就此情形展开研究。

基础知识:docker的运行

我们使用apt安装docker后,会自动配置很多东西,只是这些操作隐藏起来了,让我们使用一个apt-get install就完成操作。docker分服务端和客户端,但是在命令形式上区分不出来。我们在运行service docker start之后,docker服务就启动了,可以使用ps aux | grep docker来查询,如下:

root     11602  0.5  2.3 570236 47856 ?        Ssl  11:57   0:00 /usr/bin/dockerd -H fd://

可以看到,有一个名称为dockerd的进程,从名称看出,这是一个守护进程(ddaemon的首字母),所以它就是docker的服务器。这个服务器必须运行,如果不运行,是无法正常使用大部分的docker命令的(但docker -v不受影响)。比如:

# docker images
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

错误提示信息十分明显:就是没有运行服务器。
只是平常我们都在同一机子上使用docker,对这些没有留意,以为只有一个docker程序。

既然有服务器,那么就可以将docker服务布置到其它机器,或者使用其它机器上的docker服务。

问题提出

考虑以下场合:
jenkins部署在docker里,但CICD中需要在jenkins中构建docker镜像。方法有:

  • docker in docker,在docker容器中安装docker服务,需要在docker run 时添加特权选项。
  • docker in docker,挂载宿主的docker服务,jenkins只需要docker客户端。
  • jekins远程到其它主机,在该主机上进行构建。

本文使用第三方的docker服务器。

实现方案

首先停止docker服务:

service docker stop

修改/lib/systemd/system/docker.service文件,将原来的:

ExecStart=/usr/bin/dockerd -H fd://

修改为:

ExecStart=/usr/bin/dockerd -H tcp://192.168.1.78:2376

注意,tcp://192.168.1.78本笔者的测试机器IP,需要根据实际情况修改。
重新启动:

systemctl daemon-reload
service docker start

使用示例:

docker -H tcp://192.168.1.78:2376 build -t busybox_t .

生成的镜像位于192.168.1.78。
如果服务没运行,则会提示Cannot connect to the Docker daemon at tcp://192.168.1.78:2376. Is the docker daemon running?。这也前面的错误消息是类似的。

在docker服务器上查看:

docker -H tcp://192.168.1.78:2376 images
REPOSITORY                                       TAG                 IMAGE ID            CREATED              SIZE
busybox_t                                        latest              ad27937bd9f8        About a minute ago   4.39MB

小结

1、只能将docker服务器单独针对此场合而用。在命令操作上,必须在docker后添加-H tcp://192.168.1.78:2376。其它选项、参数无变化。如果不添加会卡住,因为没有指定docker服务器。
2、本文仅仅进行尝试,对此种方法还没有太多的认识和实践指导。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值