Docker Remote API에서 ECR의 개인 이미지를 사용하는 Swarm Service 시작

제작 ECR

Amazon ECS에서 Repositories를 선택합니다.

창고 이름을 결정합니다.

나중에 명령이 있을 겁니다.
연결 정보 등 얻기
첫 번째 지령을 내린 후, 도커 지령은 회답할 것이다.
$ aws ecr get-login --region us-east-1
docker login -u AWS -p XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX<中略>XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -e none https://XXXXXXXXX.dkr.ecr.us-east-1.amazonaws.com
docker login이build이나push로 인상을 등록하면 OK입니다.
Docker Remote API의 AUthentication
참조: https://docs.docker.com/engine/reference/api/docker_remote_api/#/authentication
"X-Registry-Auth"머리글에서 다음 JSON의 base 64 인코딩 후의 내용을 보내면 됩니다.
{
    "username": "string",
    "password": "string",
    "email": "string",
    "serveraddress" : "string",
    "auth": ""
}
아까 docker 명령과 대응하면 그렇습니다.
{
    "username": "AWS",
    "password": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX<中略>XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
    "email": "none",
    "serveraddress" : "https://XXXXXXXXX.dkr.ecr.us-east-1.amazonaws.com"
}
auth 생략.
그리고 베이스 64 인코딩.
echo '{
    "username": "AWS",
    "password": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX<中略>XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
    "email": "none",
    "serveraddress" : "https://XXXXXXXXX.dkr.ecr.us-east-1.amazonaws.com"
}' | base64
ZZZZZZZZZZZZZZZZZZZZZZZ<中略>ZZZZZZZZZZZZZZZZZZZZZZZZZ
서비스 작성 요청
방금 베이스64의 결과를 X-Registry-Auth 꼬리 위에 놓고 포스터를 던지면 됩니다.
POST /services/create -d '{
  "Name": "example001",
  "TaskTemplate": {
    "ContainerSpec": {
      "Image": "XXXXXXXXXX.dkr.ecr.us-east-1.amazonaws.com/IMAGE_NAME:latest",
      "Mounts": [{
        "Type": "volume",
        "Target": "/mnt/userdata",
        "Source": "fs-XXXXXX/example001",
        "VolumeOptions": {
          "DriverConfig": {
            "Name": "efs"
          }
        }
      }]
    }
  },
  "EndpointSpec": {
    "Ports": [
      {
        "Protocol": "tcp",
        "PublishedPort": 30001,
        "TargetPort": 8080
      }
    ]
  }
}' -H "X-Registry-Auth:ZZZZZZZZZZZZZZZZZZZZZZZ<中略>ZZZZZZZZZZZZZZZZZZZZZZZZZ"
{ "ID": "XXXXXXXXXXXXXXXXXXXXX"}
아이디가 포함된 JSON이 오자마자 일어섰다.
확인하려면 그 ID GET로 값을 되돌려 주면 OK.
GET /services/XXXXXXXXXXXXXXXXXXXXX

좋은 웹페이지 즐겨찾기