Docker: 入門指南

使用 Stackhero for Docker 快速、安全地進行遠端 Docker 管理

歡迎瀏覽 Stackhero 文件

Stackhero 提供即用型 Docker cloud CaaS (Containers as a Service) 平台,專為快速及可靠的 container 部署而設:

  • 只需一條 docker-compose up 指令即可部署到生產環境。無需額外設定:直接啟動您的 containers。
  • 可自訂您的網域名稱,並自動以 HTTPS 保護(例如:https://api.your-company.comhttps://www.your-company.comhttps://backoffice.your-company.com)。
  • 享有高效能及強大安全性的專屬私有基礎設施。
  • 一鍵套用更新,簡化維護工作,減少管理負擔。

您的 containers 約五分鐘內即可投入生產運作。Stackhero 會為您管理基礎設施、更新及安全,讓您專注於應用程式開發。了解更多 Docker CaaS cloud hosting 的詳情。

您的電腦必須已安裝 Docker CLI。 如果尚未安裝,請到官方 Docker 網站下載:Docker Desktop

透過 Stackhero for Docker,您可以像在本地一樣,利用 Docker CLI 遠端管理您的容器。這代表您可以維持熟悉的工作流程,同時直接在已準備好投入生產環境的 Docker 伺服器上安全高效地執行指令。

Docker 的「context」功能讓這一切成為可能。Context 讓您指定 Docker CLI 指令要發送到哪裡:本地 Docker daemon,還是您的 Stackhero for Docker 實例。切換 context 既快速又無縫。

為了安全連接到您的 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 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

當您在遠端容器掛載 volume 時,所存取的檔案來自遠端伺服器,而非您的本機。 例如,docker run -it -v ${PWD}:/mnt alpine 會掛載遠端目錄,而不是您目前本地的目錄。

Docker Compose 也會使用目前的 Docker context。當您將 context 設定為遠端實例後:

docker context use <XXXXXX>.stackhero-network.com

所有 Docker Compose 指令都會在您的遠端伺服器上執行。這讓您可以像在本地一樣簡單地部署多容器應用,但現在是在生產環境上。

使用 docker context 切換 context 適合互動式操作。對於腳本或 Makefile,建議使用 DOCKER_CONTEXT 環境變數以獲得更細緻的控制。更多細節請參閱我們的進階文件。

如需更深入了解 Docker context,請參考 官方 Docker context 文件