에 대한 개인 레지스트리 인증 컨테이너 인스턴스 - Amazon Elastic Container Service

문서의 영문과 번역 사이에 충돌이 있는 경우에는 영문 버전을 따릅니다. 번역 버전은 기계 번역을 사용하여 제공합니다.

에 대한 개인 레지스트리 인증 컨테이너 인스턴스

더 Amazon ECS 컨테이너 에이전트는 Docker를 포함한 개인 레지스트리에 인증할 수 있습니다. 허브, 기본 인증 사용. 개인 레지스트리 인증을 활성화하면 은(는) 태스크 정의에서 개인 Docker 이미지를 사용할 수 있습니다. 이 기능은 작업별로 EC2 시작 유형.

개인 레지스트리 인증을 활성화하는 또 다른 방법은 AWS Secrets Manager 저장 개인 레지스트리 자격 증명을 안전하게 입력한 다음 컨테이너에 참조합니다. 정의. 이렇게 하면 태스크가 개인 저장소의 이미지를 사용할 수 있습니다. 이 방법은 는 다음 중 하나를 사용하여 작업을 지원합니다. EC2 또는 Fargate 시작 유형. 자세한 내용은 을 참조하십시오. 작업에 대한 개인 레지스트리 인증.

더 Amazon ECS 컨테이너 에이전트가 시작될 때 두 가지 환경 변수를 찾습니다.

  • ECS_ENGINE_AUTH_TYPE, 인증 유형을 지정합니다. 전송 중인 데이터.

  • ECS_ENGINE_AUTH_DATA, 실제 인증 포함 자격 증명.

Linux의 변종 Amazon ECS-optimized AMI 스캔 /etc/ecs/ecs.config 컨테이너가 인스턴스가 시작되고 서비스가 시작될 때마다( sudo start ecs 명령). AMI가 아닌 s Amazon ECS-최적화한 제품은 파일 내 환경 변수를 지정하고 --env-file path_to_env_file 옵션을 docker run 컨테이너 에이전트를 시작하는 명령입니다.

중요

이러한 인증 환경 변수를 다음 위치에 삽입하지 않는 것이 좋습니다. 인스턴스 시작 Amazon EC2 사용자 데이터를 전송하거나 --env 옵션 을(를) docker run 명령. 이러한 방법은 인증 자격 증명과 같은 민감한 데이터. 안전 관련 정보 컨테이너 인스턴스에 인증 자격 증명 추가( 참조) Amazon S3에서 컨테이너 인스턴스 구성 저장.

인증 형식

개인 레지스트리 인증에 사용할 수 있는 두 가지 형식이 있습니다. dockercfgdocker.

도커cfg 인증 형식

dockercfg 형식은 저장된 인증 정보를 사용합니다. 를 실행할 때 생성되는 구성 파일에서 docker login 명령. 다음을 실행하여 이 파일을 만들 수 있습니다. docker login 등록 사용자 이름을 입력하고 암호 및 이메일 주소. 컨테이너 인스턴스에 로그인하여 명령을 클릭합니다(). Docker 버전에 따라 이 파일은 다음과 같이 저장됩니다. 다음 중 하나 ~/.dockercfg 또는 ~/.docker/config.json.

cat ~/.docker/config.json

출력:

{
  "auths": {
    "https://index.docker.io/v1/": {
      "auth": "zq212MzEXAMPLE7o6T25Dk0i"
    }
  }
}
중요

Docker의 최신 버전은 위의 그림과 같이 구성 파일을 생성합니다. 외부 auths 개체. 더 Amazon ECS 에이전트만 지원 dockercfg 아래 포맷의 인증 데이터 이(가) 없는 경우 auths 개체. 만약 jq 다음 명령을 사용하여 이 데이터를 추출할 수 있습니다. cat ~/.docker/config.json | jq .auths

cat ~/.docker/config.json | jq .auths

출력:

{
  "https://index.docker.io/v1/": {
    "auth": "zq212MzEXAMPLE7o6T25Dk0i",
    "email": "email@example.com"
  }
}

위 예제에서 다음 환경 변수를 다음에 추가해야 합니다. 환경 변수 파일(/etc/ecs/ecs.config 에 대해 Amazon ECS-optimized AMI) 해당 Amazon ECS 런타임에 컨테이너 에이전트 로드. 여러분이 사용 Amazon ECS-optimized AMI 에이전트를 수동으로 시작하는 경우 docker run, 를 사용하여 환경 변수 파일을 지정합니다. --env-file path_to_env_file 옵션: 에이전트를 시작합니다.

ECS_ENGINE_AUTH_TYPE=dockercfg ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"auth":"zq212MzEXAMPLE7o6T25Dk0i","email":"email@example.com"}}

다음 구문을 사용하여 여러 개인 레지스트리를 구성할 수 있습니다.

ECS_ENGINE_AUTH_TYPE=dockercfg ECS_ENGINE_AUTH_DATA={"repo.example-01.com":{"auth":"zq212MzEXAMPLE7o6T25Dk0i","email":"email@example-01.com"},"repo.example-02.com":{"auth":"fQ172MzEXAMPLEoF7225DU0j","email":"email@example-02.com"}}

도커 인증 형식

docker 형식은 레지스트리의 JSON 표현을 사용합니다. 를 사용하여 인증해야 합니다. 또한 해당 레지스트리에 필요한 인증 매개 변수(예: 사용자 이름, 암호 및 해당 계정의 전자 메일 주소). Docker Hub 계정의 경우, JSON 표시는 다음과 같습니다.

{ "https://index.docker.io/v1/": { "username": "my_name", "password": "my_password", "email": "email@example.com" } }

이 예제에서는 다음 환경 변수를 다음에 추가해야 합니다. 환경 변수 파일(/etc/ecs/ecs.config 에 대해 Amazon ECS-optimized AMI) 해당 Amazon ECS 런타임에 컨테이너 에이전트 로드. 여러분이 사용 Amazon ECS-optimized AMI에이전트를 수동으로 시작하는 경우 docker run, 를 사용하여 환경 변수 파일을 지정합니다. --env-file path_to_env_file 옵션: 에이전트를 시작합니다.

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_ENGINE_AUTH_TYPE=docker ECS_ENGINE_AUTH_DATA={"repo.example-01.com":{"username":"my_name","password":"my_password","email":"email@example-01.com"},"repo.example-02.com":{"username":"another_name","password":"another_password","email":"email@example-02.com"}}

개인 레지스트리 활성화

다음 절차에 따라 컨테이너에 대한 개인 레지스트리를 활성화하십시오. 인스턴스.

에서 개인 레지스트리를 활성화하려면 Amazon ECS-optimized AMI

  1. SSH를 사용하여 컨테이너 인스턴스에 로그인합니다.

  2. 다음을 엽니다. /etc/ecs/ecs.config 파일 및 추가 ECS_ENGINE_AUTH_TYPEECS_ENGINE_AUTH_DATA 레지스트리 및 계정 값:

    sudo vi /etc/ecs/ecs.config

    이 예에서는 Docker Hub 사용자 계정을 인증합니다.

    ECS_ENGINE_AUTH_TYPE=docker ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"username":"my_name","password":"my_password","email":"email@example.com"}}
  3. 에이전트가 ECS_DATADIR 환경 변수를 사용하여 상태를 저장합니다.

    docker inspect ecs-agent | grep ECS_DATADIR

    출력:

    "ECS_DATADIR=/data",
    중요

    이전 명령이 ECS_DATADIR 이 컨테이너에서 실행 중인 모든 태스크를 중지해야 합니다. 에이전트를 중지하기 전의 인스턴스. 을(를) 포함한 최신 에이전트 ECS_DATADIR 환경 변수가 상태를 저장하고 태스크가 실행되는 동안 문제 없이 중지하고 시작할 수 있습니다. 대상 자세한 내용은 업데이트 Amazon ECS 컨테이너 대리인.

  4. 중단 ecs 서비스:

    sudo stop ecs

    출력:

    ecs stop/waiting
  5. 다시 시작 ecs 서비스.

    • 의 경우 Amazon ECS-optimized Amazon Linux 2 AMI:

      sudo systemctl restart ecs
    • 의 경우 Amazon ECS-optimized Amazon Linux AMI:

      sudo stop ecs && sudo start ecs
  6. (선택 사항) 에이전트가 실행 중인지 확인하고 에이전트에 문의하여 새 컨테이너 인스턴스에 대한 정보 확인 내부 검사 API 작업. 자세한 내용은 을 참조하십시오. Amazon ECS 컨테이너 대리인 소개.

    curl http://localhost:51678/v1/metadata