

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

# 使用 建立Docker已啟用 的機群 AWS CLI
<a name="fleet-container-support-cli"></a>

佇列角色需要許可才能向 Amazon ECR 進行身分驗證，並提取Docker佇列環境選取的映像。預設佇列環境的機群角色許可是選用的。當主機組態動作或工作者端工具在佇列工作階段外提取映像時新增它。

## 先決條件
<a name="fleet-container-cli-prerequisites"></a>

開始之前，請設定 AWS CLI 具有許可的 來建立截止日期雲端機群，並將政策連接至佇列和機群角色。您也需要在 Amazon ECR 私有儲存庫中現有的陣列、佇列、佇列角色、機群角色和容器映像。

## 建立機群
<a name="fleet-container-cli-create"></a>

**建立已啟用 Docker的機群**

1. 設定您的陣列、佇列和角色值。

   ```
   FARM_ID={{farm-0123456789abcdef0123456789abcdef}}
   QUEUE_ID={{queue-0123456789abcdef0123456789abcdef}}
   FLEET_ROLE_ARN={{arn:aws:iam::123456789012:role/DeadlineFleetRole}}
   MAX_WORKERS={{10}}
   
   QUEUE_ROLE_ARN=$(aws deadline get-queue \
       --farm-id "$FARM_ID" \
       --queue-id "$QUEUE_ID" \
       --query roleArn \
       --output text)
   QUEUE_ROLE_NAME=${QUEUE_ROLE_ARN##*/}
   FLEET_ROLE_NAME=${FLEET_ROLE_ARN##*/}
   ECR_READ_ONLY_POLICY=arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly
   ```

1. 將 Amazon ECR 唯讀政策連接至佇列角色。預設Docker佇列環境會使用佇列憑證來驗證和提取映像。

   ```
   aws iam attach-role-policy \
       --role-name "$QUEUE_ROLE_NAME" \
       --policy-arn "$ECR_READ_ONLY_POLICY"
   ```

1. （選用） 當主機組態動作或工作者端工具必須在佇列工作階段外提取映像時，將相同的政策連接至機群角色。

   ```
   aws iam attach-role-policy \
       --role-name "$FLEET_ROLE_NAME" \
       --policy-arn "$ECR_READ_ONLY_POLICY"
   ```

1. `docker-fleet-configuration.json` 使用下列機群組態建立名為 的檔案：

   ```
   {
     "serviceManagedEc2": {
       "instanceCapabilities": {
         "vCpuCount": {
           "min": 4,
           "max": 16
         },
         "memoryMiB": {
           "min": 8192,
           "max": 65536
         },
         "osFamily": "linux",
         "cpuArchitectureType": "x86_64",
         "softwareAddOns": [
           {
             "name": "docker"
           }
         ]
       },
       "instanceMarketOptions": {
         "type": "spot"
       }
     }
   }
   ```

1. 建立服務受管機群並儲存其機群 ID。

   ```
   FLEET_ID=$(aws deadline create-fleet \
       --farm-id "$FARM_ID" \
       --display-name "Docker fleet" \
       --role-arn "$FLEET_ROLE_ARN" \
       --min-worker-count 0 \
       --max-worker-count "$MAX_WORKERS" \
       --configuration file://docker-fleet-configuration.json \
       --query fleetId \
       --output text)
   
   echo "$FLEET_ID"
   ```

1. 將佇列與機群建立關聯。

   ```
   aws deadline create-queue-fleet-association \
       --farm-id "$FARM_ID" \
       --queue-id "$QUEUE_ID" \
       --fleet-id "$FLEET_ID"
   ```

## 驗證機群和角色許可
<a name="fleet-container-cli-verify"></a>

**驗證容器支援**

1. 確認機群組態包含Docker軟體附加元件。

   ```
   aws deadline get-fleet \
       --farm-id "$FARM_ID" \
       --fleet-id "$FLEET_ID" \
       --query 'configuration.serviceManagedEc2.instanceCapabilities.softwareAddOns'
   ```

   確認回應包含 `"name": "docker"`。

1. 確認佇列角色具有 Amazon ECR 唯讀政策。

   ```
   aws iam list-attached-role-policies \
       --role-name "$QUEUE_ROLE_NAME" \
       --query 'AttachedPolicies[?PolicyName==`AmazonEC2ContainerRegistryReadOnly`]'
   ```

1. 如果您將政策連接至機群角色，請使用 重複 命令`--role-name "$FLEET_ROLE_NAME"`。

機群提供無根 Docker，但佇列仍然需要識別映像的Docker佇列環境。如需佇列組態詳細資訊，請參閱 [服務受管機群的容器支援](fleet-container-support.md)。