访问远程的Docker节点

一般来说我们都是访问本地的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

4.使用 Portainer

5.使用Ansible远程执行Docker命令

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值