【Docker学习总结】12.Docker的CS模式

一、Docker的C/S模式介绍

下图为Docker官方提供的Docker的CS运行模式的介绍:

                                         

在Docker Client中来运行Docker的各种命令,而这些命令会传送给在Docker的宿主机上运行的Docker的守护进程。而Docker的守护进程是负责来实现Docker的各种功能。
下面的图是去掉了一些没有用的信息,专注于Docker的客户端与守护进程的描述:

       

如图所示,Docker的守护进程运行在宿主机上,也就是我们常说的“C/S架构”的Server(服务)端,守护进程会在启动后,一直在后台运行,负责实现Docker的各种功能。而Docker的使用者并不会直接与守护进程进行交互,而是要通过Docker的客户端,也就是我们在前面演示过的Docker的命令行接口,来与Docker守护进程进行通信。而这个命令行接口,也就是我们在Shell中执行Docker命令时运行的二进制程序,它是Docker最主要的用户接口,用来从用户处接收Docker的命令,并且传递给守护进程;而守护进程将命令执行的结果返回给客户端,返显示在命令行接口中。
 

二、Remote API

除了上面提到的客户端的命令行接口,Docker也提供了另外的与守护进程进行通信的方式。这就是Remote API。
Remote API和我们常见的网络平台提供的API非常相似,它也是一个RESTful风格的API。我们可以通过Remote API与Docker的守护进程进行通信。也就是说,我们可以通过编写程序,调用这个API,来将我们自己的程序与Docker进行集成。
 

Docker的Remote在某些复杂的情况下,也支持以下方式进行交互:
STDIN、STDOUT、STDERR
备注:标准输入(STDIN)、标准输出(STDOUT)、标准错误输出(STDERR)

下面这幅图我们可以看到,通过Remote API的形式,来实现Docker的C/S架构的模式:

用户可以与自定义的程序(JAVA、C++等)进行交互,而这些程序通过调用Remote API与Docker的守护进行进行协作。

三、Docker客户端与守护进程的通信方式

Docker的客户端与守护进程,实际上是通过Socket进行连接的。
Docker提供了三种进行Socket连接的模式:
(1)Unix的端口模式
unix:///var/run/docker.sock
(2)TCP协议的host:port模式:
tcp://host:port
(3)fd的Socket模式
fd://socketfd
其中,Unix的端口模式是Docker默认的客户端与守护进程的连接方式。我们也可以通过配置进行修改,来使用其它的Socket连接方式。


下图就是一个完整的Docker的C/S模式的运行方式:

四、连接演示

刚才我们了解到,Docker的守护进程,在启动后,会一直运行,那么我们就可以使用Linux的PS命令,来查看当前进程中是否已经启动了Docker的服务:

我们使用“grep”来过滤Docker关键字。我们看到的第一条就是正在运行的Docker的守护进程。
我们在命令行中使用的Docker命令,实际上就是使用的Docker的客户端程序在与守护进程进行交互。

 

我们运行version命令:

其中的“server API version”指的就是我们刚刚讲的Remote API的版本。

下面我们再来演示Docker的Remote API是什么样子。这里我们需要使用Linux的netcat(nc)的命令,来实现socket的连接:

注意:没有nc命令,使用“yum install -y nc”即可安装。
上面我们使用“-U”来指明使用的是socket,Docker使用的socket地址为“/var/run/docker.sock”。回车后,就已经成功连接了socket:

此时我们使用socket来发起一个http的指令,用来查看Remote API中的一个接口---info,这个接口用来返回Docker的相关信息。后面的“HTTP/1.1”为指定的协议类型。我们看到返回的结果就是通过Docker的Remote API所返回的结果,这个结果使用了json的格式。(这里我始终得不到JSON反馈)
 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值