📅  最后修改于: 2023-12-03 15:21:52.172000             🧑  作者: Mango
Docker 是一种容器化技术,它允许开发者在不同的操作系统之间轻松移动应用程序并在容器化的环境中运行。Docker 容器通过使用镜像来构建,这些镜像可以很容易地在 Docker Hub 上找到或自己构建。在这种环境中,有时需要在远程主机上运行 Docker,这就需要能够从本地 CLI 访问远程 Docker 主机。本文将介绍如何通过 CLI 访问远程 Docker 主机。
在继续之前,请确保满足以下要求:
使用 SSH 访问来连接远程 Docker 主机是最常用的方法之一。这种方法可以确保安全性和可扩展性。为了连接到远程 Docker 主机,您需要使用 SSH 协议建立连接并执行 docker 命令。以下是如何连接到远程 Docker 主机的步骤:
ssh user@remote-docker-host.com
sudo docker run --name test-container -d busybox top
docker ps
还可以通过开放远程 Docker 主机 REST API 的方式进行访问。通过 REST API,您可以轻松地在远程 Docker 主机上管理容器和镜像。以下是如何连接到远程 Docker 主机的步骤:
/etc/docker/daemon.json
:{
"hosts": ["tcp://0.0.0.0:2376", "unix:///var/run/docker.sock"]
}
sudo systemctl restart docker
确保远程 Docker 主机的防火墙已配置允许对 TCP 端口 2376 的入站访问。
在本地 CLI 上设置 DOCKER_HOST
环境变量以指向远程 Docker 主机:
export DOCKER_HOST=tcp://remote-docker-host.com:2376
docker ps
由于 REST API 访问通信是明文传输,因此可能存在安全问题。因此,可以使用 SSH + TLS 访问来保护通信。以下是如何连接到远程 Docker 主机的步骤:
ssh user@remote-docker-host.com
sudo mkdir /etc/docker/tls
curl https://raw.githubusercontent.com/docker/docker/master/contrib/ssl/docker.cnf | sudo tee /etc/docker/tls/docker.cnf > /dev/null
openssl genrsa -out /etc/docker/tls/server.key 4096
openssl req -new -key /etc/docker/tls/server.key -out /etc/docker/tls/server.csr -config /etc/docker/tls/docker.cnf
openssl x509 -req -days 365 -in /etc/docker/tls/server.csr -signkey /etc/docker/tls/server.key -out /etc/docker/tls/server.crt
sudo touch /etc/docker/htpasswd
sudo htpasswd -b /etc/docker/htpasswd user password
sudo systemctl restart docker
DOCKER_HOST
环境变量并指向远程 Docker 主机的 TLS 证书:export DOCKER_HOST=ssh://user@remote-docker-host.com DOCKER_TLS_VERIFY=1 DOCKER_CERT_PATH=/path/to/docker/tls
docker ps
通过本文中介绍的方法,您可以轻松地从 CLI 访问远程 Docker 主机。当然,需要根据实际情况选择不同的访问方法。如果您的容器需要以安全方式连接远程主机,则应该使用 SSH + TLS 访问;否则,使用 SSH 或 REST API 访问即可。