引導 Amazon ECS Linux 容器執行個體以傳遞資料 - Amazon Elastic Container Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

引導 Amazon ECS Linux 容器執行個體以傳遞資料

當您啟動 Amazon EC2 執行個體時,您可以將使用者資料傳遞至 EC2 執行個體。此資料可用來執行常見的自動化組態任務,甚至在執行個體啟動時,執行指令碼。對於 Amazon ECS,使用者資料的最常用案例是將組態資訊傳送到 Docker 常駐程式和 Amazon ECS 容器代理程式。

您可以將多種類型的使用者資料傳遞給 Amazon EC2,包含雲端 boothook、shell 指令碼和 cloud-init 指令。如需這些和其他格式類型的詳細資訊,請參閱 Cloud-Init 文件

若要在使用 Amazon EC2 啟動精靈時傳遞使用者資料,請參閱啟動 Amazon ECS Linux 容器執行個體

您可以將容器執行個體設定為在容器代理程式組態或 Docker 精靈組態中傳遞資料。

Amazon ECS 容器代理程式

Amazon ECS 最佳化 AMI 的 Linux 變體會在容器代理程式啟動時,於 /etc/ecs/ecs.config 檔案中尋找代理程式組態資料。您可以使用 Amazon EC2 使用者資料在啟動時指定此組態資料。如需可用 Amazon ECS 容器代理程式組態變數的詳細資訊,請參閱 Amazon ECS 容器代理程式組態

若只要設定單一代理程式組態變數 (例如叢集名稱),請使用 echo 將變數複製至組態檔案:

#!/bin/bash echo "ECS_CLUSTER=MyCluster" >> /etc/ecs/ecs.config

如有多個變數要寫入 /etc/ecs/ecs.config,請使用以下 heredoc 格式。此格式會將開頭為 catEOF 之行間的所有項目寫入組態檔案。

#!/bin/bash cat <<'EOF' >> /etc/ecs/ecs.config ECS_CLUSTER=MyCluster ECS_ENGINE_AUTH_TYPE=docker ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"username":"my_name","password":"my_password","email":"email@example.com"}} ECS_LOGLEVEL=debug ECS_WARM_POOLS_CHECK=true EOF

若要設定自訂執行個體屬性,請設定 ECS_INSTANCE_ATTRIBUTES 環境變數。

#!/bin/bash cat <<'EOF' >> ecs.config ECS_INSTANCE_ATTRIBUTES={"envtype":"prod"} EOF

Docker 常駐程式

您可以使用 Amazon EC2 使用者資料指定 Docker 常駐程式組態資訊。如需組態選項的詳細資訊,請參閱 Docker 常駐程式文件

在下例中,自訂選項會新增到 Docker 常駐程式組態檔案,/etc/docker/daemon.json,然後在執行個體啟動時在使用者資料中指定它。

#!/bin/bash cat <<EOF >/etc/docker/daemon.json {"debug": true} EOF systemctl restart docker --no-block

在下例中,自訂選項會新增到 Docker 常駐程式組態檔案,/etc/docker/daemon.json,然後在執行個體啟動時在使用者資料中指定它。此範例顯示如何停用 Docker 常駐程式組態檔案中的 Docker 代理。

#!/bin/bash cat <<EOF >/etc/docker/daemon.json {"userland-proxy": false} EOF systemctl restart docker --no-block