Docker 服务C/S模式之客户端docker 说明

2020-08-06 0 By admin

一、Docker 服务的C/S模式

当我们启动 Dockerd 守护进程后,容器化运行的环境已经为我们配置好了。其他包括镜像管理、网络环境、文件系统、资源管理等。我们通过使用客户端管理工具 docker 对容器化服务的容器、镜像和一些环境信息做管理配置。其中用户、客户端工具和服务端守护进程的通讯方式如下:

用户 《-----》  客户端docker  <--执行结果  -  管理命令-->  服务器端dockerd

用户通过客户端工具docker,将管理命令发送给 dockerd 守护进程;守护进程将命令的执行结果,通过客户端工具docker 返回给用户。

1.1、docker服务C/S模式的通讯方式

docker 容器化服务的守护进程和客户端之间的通信,有三种方式可以选择。
unix:///var/run/docker.sock
tcp://host:port
fd://socketfd

二、Docker 服务的客户端docker 介绍

Docker 服务是 C/S 模式架构,其中服务端 dockerd 和 客户端 docker 可以部署在同一台宿主机中,通过 socket 文件进行通信;也可以分别部署在不同的服务器上,通过 tcp 网络协议进行通信。
服务端dockerd 和 客户端docker 同时部署在一台宿主机中,不需要特别修改就可以正常通信使用;这里就不过多说明。

2.1、docker 远程访问如何配置

将守护进程dockerd 和 客户端docker 分别部署在不同的机器中,要保证它们之间的正常通信,就需要分别对两者做一些配置修改。
dockerd 守护进程需要配置其监听 TCP 协议通信,具体方式,请参见之前的文档。
docker 客户端工具需要配置其连接远程的 dockerd 守护进程地址,而不是连接本服务器的地址。
1、docker -H 设置远程访问
在客户端 docker 管理工具执行命令时,设置 -H tcp://docker.server.com:2375 参数,这样客户端工具就会连接远程的容器服务。
2、配置远程访问的全局变量
上面的远程连接方法虽然可行,但是每次发送管理命令,都需要添加一长串指定服务端的参数;不美观而且很麻烦。
我们也可以设置一个环境变量,用于存储远程守护进程 dockerd 的访问地址;之后每次执行 docker 管理命令都会使用这个环境变量为目标 dockerd 连接地址。
设置的环境变量名为DOCKER_HOST;示例:export DOCKER_HOST="tcp://docker.server.com:2375" 。

2.2、镜像仓库的认证如何配置

在Docker 服务的 C/S 模式中,如果使用客户端 docker 管理远程的服务端守护进程 dockerd;则如何配置镜像仓库的认证信息哪?
仓库认证信息默认存储在 /root/.docker/config.json 文件中,可以通过 dockedr login --username=docker registry.docker.com 命令登陆成功后,文件就会自动生成。
这个仓库认证信息配置文件,应该放置在客户端 docker 管理工具所在的服务器上;而不是放在服务端守护进程dockerd 的服务器中。
个人理解
镜像仓库的认证信息应该属于docker 客户端的配置部分;而docker 的服务器守护进程并不存储镜像仓库的信息。