4.3docker基础详细版--docker的C/S模式及远程访问

本文深入探讨Docker的客户端/服务器(C/S)模式,解析如何通过命令行接口和Remote API与Docker守护进程交互,包括连接方式、远程访问配置及实验步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

docker C/S模式


server-client

docker的C/S模式结构可以如下图:
这里写图片描述

docker 的守护进程即server端运行在宿主机上,守护进程在启动后一直在后端运行,而用户不会直接和守护进程交互,而是和docker的客户端即docker命令行接口交互,从用户接受命令传递给守护进程。守护进程接受到命令后执行并返回运行结果。

server-RemoteAPI

除了使用docker命令行接口与server端进行通信外,还可以使用Remote API进行通信。它是一种RESTful风格的API,即可自行编写程序与docker进行集成。这样的C/S架构的模式如下图:
这里写图片描述

C/S模式的连接方式


docker客户端和守护进程间通过socket进行连接,docker提供了三种连接模式:

unix:///var/run/docker.sock
tcp://host:port
fd://socketfd

其中,unix:///var/run/docker.sock是默认的连接方式们可以通过配置修改为其他的连接方式。

这里写图片描述

这样意味着docker的client和server可以在一台服务器上或不同服务器上

实验


通过执行ps -ef | grep docker来查看docker是否运行,如果docker在运行,name执行docker version查看docker的版本

这里写图片描述

这里执行的docker version命令就是利用docker的client端来和server端进行交互的

想要通过RemoteAPI来和docker进行交互,则通过nc -U /var/run/docker.sock来连接docker的socket,然后通过输入GET请求来获取server端信息:
这里写图片描述

docker的远程访问


环境准备

两台虚拟机,安装docker,确保docker的client和version的版本一致。

修改服务端启动文件

在centos7下docker的启动文件为/etc/sysconfig/docker,打开这个文件,加入如下的一行:

OPTIONS='--label name=docker_server_1 -H tcp://0.0.0.0:2375'

-H 在启动中指定docker的socket连接方式,远程连接指定tcp连接。

修改完后重启服务端docker服务:

service docker restart

然后查看本机的ip地址,这里我的是:192.168.177.138,在客户端使用curl命令进行远程连接:

curl http://192.168.177.138:2375/info

这里写图片描述

可以看到成功显示出了info接口的信息,且label的名字是在server端设置的label名,说明客户端成功远程连接了server端。

上边的通过curl的方式连接其实是RESTfulAPI的连接,也可以通过docker的client命令行连接,同样通过-H指定连接方式,命令如下:

docker -H tcp://192.168.177.138:2375/ info

同样输出了第一台服务器docker的info信息

简化连接命令

上述的连接命令都要使用-H来制定连接的服务端ip,docker提供了默认的环境变量DOCKER_HOST,通过设置它的值为需要连接的服务端ip来在命令中省去-H参数,设置如下:

export DOCKER_HOST="tcp://192.168.177.138:2375/"

这样,现在使用命令docker info连接的就是服务端的docker的info信息了。

当使用完毕,可以将这个环境变量置空:export DOCKER_HOST="",这样再连接就是本地docker了。

设置docker远程连接的主机可以连接本机

在设置了远程连接的服务器上运行docker info会发现:

这里写图片描述

这时可以这样设置,修改启动配置文件中刚增加的OPTIONS为:

OPTIONS='--label name=docker_server_1 -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock'

可以看出-H指定的连接方式可以是多个

然后重启docker服务就可以本地连接了。

本文转自:这里

### 创建 Docker CLI 插件目录并复制文件 在 Linux 中,可以通过 `mkdir` 命令创建所需的目录结构,并通过 `cp` 或其他方式将文件复制到目标位置。以下是具体操作方法: #### 1. 创建 Docker CLI 插件目录 为了确保目录存在,可以使用 `-p` 参数来运行 `mkdir` 命令。此参数的作用是如果父级目录不存在,则会自动递归创建它们。 ```bash mkdir -p ~/.docker/cli-plugins ``` 这条命令会在用户的家目录下创建 `.docker/cli-plugins` 文件夹。如果没有 `.docker` 目录,它也会一并被创建[^2]。 #### 2. 将文件复制到目标目录 假设已经下载了一个名为 `docker-compose` 的二进制文件至当前工作目录,可以将其移动到刚刚创建的插件目录中: ```bash mv docker-compose ~/.docker/cli-plugins/ ``` 或者也可以使用 `cp` 来完成同样的功能: ```bash cp docker-compose ~/.docker/cli-plugins/ ``` #### 3. 设置文件权限 为了让该二进制文件具有可执行权限,需为其赋予相应的权限位: ```bash chmod +x ~/.docker/cli-plugins/docker-compose ``` 这一步非常重要,因为只有设置了正确的权限之后,Docker 才能识别这个插件作为合法的子命令[^1]。 #### 完整流程示例 以下是一个完整的脚本实例,用于展示整个过程: ```bash #!/bin/bash # 下载最新版本的 compose 工具 curl -SL https://github.com/docker/compose/releases/download/v2.11.2/docker-compose-linux-x86_64 \ -o ~/docker-compose-temp # 创建 cli-plugins 子目录 mkdir -p ~/.docker/cli-plugins # 移动文件到指定路径 mv ~/docker-compose-temp ~/.docker/cli-plugins/docker-compose # 添加可执行权限 chmod +x ~/.docker/cli-plugins/docker-compose ``` 上述脚本涵盖了从下载、创建目录、移动文件到最后赋予权限的所有必要步骤。 ### 注意事项 - 如果计划让所有用户都能访问新安装的工具,那么应该考虑把文件放置于全局共享的位置比如 `/usr/local/lib/docker/cli-plugins/` 并相应调整权限设置。 - 确认网络连接正常以便能够顺利拉取远程资源[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值