Docker: 入门指南
使用 Stackhero for Docker 实现快速、安全的远程 Docker 管理
欢迎查阅 Stackhero 文档
Stackhero 提供即开即用的 Docker 云端 CaaS(Containers as a Service) 平台,专为快速且可靠的容器部署而设计:
- 只需一条
docker-compose up命令即可部署到生产环境,无需额外配置:直接启动您的容器即可。- 可自定义您的域名,并自动通过 HTTPS 实现安全保护(例如:https://api.your-company.com、https://www.your-company.com 或 https://backoffice.your-company.com)。
- 享受高性能与强大安全性的专属私有基础设施。
- 一键应用更新,维护简单省力。
您的容器大约五分钟即可上线生产环境。Stackhero 为您管理基础设施、更新和安全,让您专注于应用交付。详细了解 Docker CaaS 云端托管。
如何远程使用 Docker CLI
您的电脑需要已安装 Docker CLI。 如果尚未安装,您可以从 Docker 官方网站下载:Docker Desktop。
通过 Stackhero for Docker,您可以像在本地一样,使用 Docker CLI 远程管理您的容器。这意味着您可以保持熟悉的工作流程,但现在可以直接在生产级 Docker 服务器上安全高效地运行命令。
Docker 的“context”功能让这一切成为可能。通过 context,您可以指定 Docker CLI 命令的目标:本地 Docker daemon 或您的 Stackhero for Docker 实例。切换 context 既快速又无缝。
安装 Docker 证书
要安全地连接到您的 Stackhero for Docker 实例,您需要在本地电脑上安装该实例的证书。这些证书负责身份验证和加密,确保您的连接私密且安全。
您可以使用以下命令下载并配置证书:
# HOST 是您的 Docker 实例域名(<XXXXXX>.stackhero-network.com)。
# SERVICE_ID 是您的 Stackhero 服务 ID。
# CERTIFICATES_PASSWORD 是您在 Stackhero 控制台 Docker 配置中设置的密码。
(export HOST="<XXXXXX>.stackhero-network.com"
export SERVICE_ID="<SERVICE_ID>"
export CERTIFICATES_PASSWORD="<CERTIFICATES_PASSWORD>"
cd /tmp/ \
&& curl -o certificates.tar https://docker:$CERTIFICATES_PASSWORD@$HOST/stackhero/docker/certificates.tar \
&& tar -xf certificates.tar \
&& (docker context rm -f $HOST 2> /dev/null || true) \
&& docker context create $HOST \
--description "$SERVICE_ID ($HOST)" \
--docker "host=tcp://$HOST:2376,ca=ca.pem,cert=cert.pem,key=key.pem")
此命令会创建一个以您的服务域名命名的 Docker context。您可以通过以下命令查看所有可用的 context:
docker context ls
如果您更新了服务域名,证书也会随之更换。您需要重新安装证书以确保安全连接。
远程运行 Docker 容器
默认情况下,执行 docker ps 会显示本地机器上的容器。例如,运行:
docker run --rm alpine wget -q -O - ifconfig.me
会返回您本地电脑的公网 IP,因为容器是在本地运行的。
如需远程操作,只需将 Docker context 切换到您的 Stackhero for Docker 实例:
docker context use <XXXXXX>.stackhero-network.com
现在,所有 Docker CLI 命令都将在您的远程 Docker 服务器上执行。再次运行同样的 IP 检查命令:
docker run --rm alpine wget -q -O - ifconfig.me
将显示您的 Stackhero for Docker 实例的公网 IP,这说明您的容器已在远程服务器上运行。
如需切换回本地 Docker daemon,只需执行:
docker context use default
当您在远程容器中挂载卷时,访问到的文件来自远程服务器,而不是本地电脑。 例如,
docker run -it -v ${PWD}:/mnt alpine挂载的是远程目录,而不是您当前本地目录。
使用 Docker Compose 部署
Docker Compose 也会使用当前的 Docker context。只要通过以下命令将 context 设置为远程实例:
docker context use <XXXXXX>.stackhero-network.com
之后,您运行的所有 Docker Compose 命令都会在远程服务器上执行。这样,您可以像在本地一样简单地部署多容器应用,但实际操作的是生产环境。
使用
docker context切换 context 适合交互式操作。对于脚本或 Makefile,建议使用DOCKER_CONTEXT环境变量以获得更灵活的控制。更多详情请参阅我们的高级文档。
如需深入了解 Docker context,建议参考 官方 Docker context 文档。