Docker: 入門指南

如何開始使用 Stackhero for Docker

👋 歡迎來到 Stackhero 文件!

Stackhero 提供一個即用型的 Docker cloud 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 cloud hosting 解決方案,並將您的容器部署到生產環境!

您的電腦上應安裝 Docker CLI。 如果尚未安裝,您可以在這裡下載:https://www.docker.com/products/docker-desktop/

使用 Stackhero for Docker,您可以像在本地工作一樣,從電腦遠程連接到您的 Docker 伺服器。此設置允許您保持常規的工作流程,同時提供一種強大的方式來管理生產環境中的容器。

為了實現這一點,會使用 Docker "contexts"。Docker contexts 允許您在電腦上使用 Docker CLI 並指定命令應執行的位置:在本地 Docker daemon(如常)或在您的 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 daemon,顯示在您的電腦上運行的容器。

例如,您可以運行此命令來獲取您的 Docker daemon 公共 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 daemon 上執行。

再次運行相同的命令以檢索您的 Docker daemon 的公共 IP:docker run --rm alpine wget -q -O - ifconfig.me。您現在應該會看到您的 Stackhero for Docker 實例的公共 IP,確認您的容器正在您的伺服器上運行,而不再是在您的電腦上。

要恢復使用本地 Docker daemon,只需將您的 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 環境變量,這在我們的高級文檔頁面中有詳細介紹。