Docker: 入门指南

如何开始使用 Stackhero for Docker

👋 欢迎来到 Stackhero 文档!

Stackhero 提供现成的 Docker 云 CaaS (Containers as a Service) 解决方案,具有众多优势,包括:

  • 只需一个 docker-compose up,即可轻松将您的容器部署到生产环境
  • 使用 HTTPS 保护的可定制域名(例如,https://api.your-company.comhttps://www.your-company.comhttps://backoffice.your-company.com)。
  • 专用私有 VM提供的最佳性能强大安全性
  • 只需点击即可轻松更新

节省时间简化您的生活:只需 5 分钟即可尝试 Stackhero 的 Docker CaaS 云托管 解决方案,并将您的容器部署到生产环境!

您的计算机上应安装 Docker CLI。 如果尚未安装,您可以在此下载:https://www.docker.com/products/docker-desktop/

使用 Stackhero for Docker,您可以像在本地工作一样,从计算机远程连接到 Docker 服务器。此设置允许您保持常规工作流程,同时提供一种强大的方式来管理生产环境中的容器。

为此,使用了 Docker "contexts"。Docker contexts 使您可以在计算机上使用 Docker CLI,并指定命令应在何处执行:在本地 Docker 守护进程(如常规)或在 Stackhero for Docker 实例上。

要远程连接到您的 Stackhero for Docker 实例,您首先需要安装其证书。这些证书确保您的计算机与 Stackhero for Docker 实例之间的安全认证和加密。

在您的计算机上,您可以使用以下命令:

# HOST 是您的 Stackhero for Docker 实例的域名 (<XXXXXX>.stackhero-network.com)。
# SERVICE_ID 是您的 Stackhero 服务 ID。
# CERTIFICATES_PASSWORD 是在您的 Stackhero for 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。要查看所有 contexts,您可以运行命令 docker context ls

警告 如果您更新服务域名,证书将更改,您需要重新安装它们。

目前,如果您使用命令 docker ps 列出容器,您的 Docker CLI 将使用本地 Docker 守护进程,显示在计算机上运行的容器。

例如,您可以运行此命令以获取 Docker 守护进程的公共 IP:docker run --rm alpine wget -q -O - ifconfig.me。由于容器在您的计算机上运行,您将看到互联网路由器的 IP 作为回复。

让我们更改 Docker context 以使用您的 Stackhero for Docker 实例。只需运行命令 docker context use <XXXXXX>.stackhero-network.com。现在,在计算机上启动的 Docker 命令将安全地在远程 Docker 守护进程上执行。

再次运行相同的命令以检索 Docker 守护进程的公共 IP:docker run --rm alpine wget -q -O - ifconfig.me。您现在应该看到 Stackhero for Docker 实例的公共 IP,确认您的容器正在服务器上运行,而不再是在计算机上。

要恢复使用本地 Docker 守护进程,只需将 Docker context 切换回 "default":docker context use default

当您在远程容器上挂载卷时,可访问的数据将是远程服务器上的数据,而不是计算机上的数据。 因此,运行类似 docker run -it -v ${PWD}:/mnt alpine 的命令不会像您预期的那样挂载计算机上的目录。

与 Docker CLI 一样,Docker-compose CLI 将使用您当前的 context。因此,一旦您使用 docker context use <XXXXXX>.stackhero-network.com 切换到远程实例,每个 Docker-compose 命令也将在远程实例上执行。

使用 docker context 命令是有效的,但在处理脚本或 Makefiles 中的 contexts 时可能不是最佳方法。 在这种情况下,请考虑使用 DOCKER_CONTEXT 环境变量,详细信息请参阅我们的高级文档页面。