一般来说我们都是访问本地的docker,但是有时候需要从本地去访问远程的docker主机,,通常涉及到通过网络连接到远程服务器上的Docker守护进程。包括使用SSH、Docker命令行工具的特定参数,或者通过配置Docker守护进程以允许远程连接。
1.方式1:使用SSH和Docker命令
这种方式实际上是登录到远程服务器。
#ssh 用户名@远程服务器IP地址
ssh lx@192.168.31.59
2.方式1: 配置Docker守护进程以允许远程连接(推荐)
1.查看 Docker 服务状态
在远程主机上,确保 Docker 服务正在运行,并设置为开机自启。
sudo systemctl start docker
sudo systemctl enable docker
2. 配置 Docker 以支持远程访问
默认情况下,Docker 监听本地的 Unix 套接字(unix:///var/run/docker.sock)来处理本地连接请求。我们需要修改 Docker 配置以允许远程连接。以下是两种常见的配置方法:
方式1:修改 Docker 配置文件 daemon.json
如果该文件(/etc/docker/daemon.json)不存在,可以手动创建。以下是一个示例的 daemon.json 配置文件:
{
"hosts": [
"unix:///var/run/docker.sock",
"tcp://0.0.0.0:2375"
]
}
方式2: 修改 Docker 服务文件
/lib/systemd/system/docker.service使用文本编辑器打开该文件,并找到包含 ExecStart 的行。
![]()
将 -H fd:// 行替换为允许远程连接的地址
ExecStart=/usr/bin/dockerd -H fd:// -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375

3.重启 Docker 服务
完成配置文件的修改后,我们需要重新启动 Docker 服务以使修改生效。
sudo systemctl daemon-reload
sudo systemctl restart docker
#启动失败检查服务状态
sudo systemctl status docker
4.配置防火墙以允许 Docker 端口通信
默认情况下,Docker 使用 2375 端口。我们需要确保防火墙允许外部访问该端口。
# 允许 TCP 访问 2375 端口
sudo ufw allow 2375/tcp
# 重新加载防火墙规则
sudo ufw reload
5.连接远端Docker
远程主机上的docker 运行的容器

5.1 使用 Docker API
Docker 提供了 REST API,使得用户也可以通过 HTTP 请求与 Docker 守护进程进行交互。我们可以使用工具如 curl 来调用 API。
curl http://remote_host:2375/containers/json
5.2 使用 Docker CLI
#通过设置环境变量DOCKER_HOST,实际上是修改docker context的DOCKER ENDPOINT
export DOCKER_HOST="tcp://192.168.31.59:2375"
docker ps

5.3 Docker-compose使用Docker CLI访问
这种方式可以直接在本地通过dockercompose将服务部署到远程docker主机,而不需要将文件上传到远程服务器
方法一:使用环境变量
export DOCKER_HOST="tcp://192.168.31.59:2375"
docker-compose -f 本地docker-compose.yml up
方法二:使用命令行参数
docker-compose -H 192.168.31.59:2375 -f 本地docker-compose.yml up
方法三:通过 SSH 隧道访问远程 Docker
ssh -L 2375:localhost:2375 user@remote-host -N
export DOCKER_HOST=tcp://localhost:2375
docker-compose up
检查远程主机的容器,服务已经启动了
5.4 使用Docker Contexts
docker Management Commands:

#docker context create 名称 --docker "host=tcp://远程主机名:2375"
#docker context use 远程主机名
docker context create remote-context --docker "host=tcp://192.168.31.59:2375"
docker context use remote-context
3.使用Docker Machine远程管理Docker

871

被折叠的 条评论
为什么被折叠?



