기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Dockerrun.aws.json v2 파일 구성
Dockerrun.aws.json v2
Elastic Beanstalk 환경의 ECS 클러스터에서 호스팅되는 도커 컨테이너 세트를 배포하는 방법을 설명하는 Elastic Beanstalk 구성 파일입니다. Elastic Beanstalk 플랫폼은 ECS 컨테이너 정의를 포함하는 ECS 작업 정의를 생성합니다. 이러한 정의는Dockerrun.aws.json
구성 파일에 설명되어 있습니다.
Dockerrun.aws.json
파일의 컨테이너 정의는 ECS 클러스터의 각 Amazon EC2 인스턴스에 배포할 컨테이너를 설명합니다. 이 경우 Amazon EC2 인스턴스는 도커 컨테이너를 호스팅하므로 호스트 컨테이너 인스턴스라고도 합니다. 구성 파일은 또한 도커 컨테이너를 마운트하기 위해 호스트 컨테이너 인스턴스에서 생성할 데이터 볼륨을 설명합니다. Elastic Beanstalk의 ECS 관리형 도커 환경의 구성 요소에 대한 자세한 내용과 다이어그램은 이 장의ECS 관리형 Docker 플랫폼 개요 앞부분을 참조하십시오.
Dockerrun.aws.json
파일은 단독으로 사용하거나 추가 소스 코드와 함께 단일 아카이브에 압축할 수 있습니다. Dockerrun.aws.json
과 함께 보관되는 소스 코드는 Amazon EC2 컨테이너 인스턴스에 배포되며 /var/app/current/
디렉터리에서 액세스할 수 있습니다.
Dockerrun.aws.json
v2
Dockerrun.aws.json
섹션에 포함되는 필드는 다음과 같습니다.
- AWSEBDockerrunVersion
-
버전 번호를 ECS 관리형 도커 환경 값
2
(으)로 지정합니다. - 볼륨
-
Amazon EC2 컨테이너 인스턴스 내 폴더로부터 또는 (
/var/app/current
에 배포된) 소스 번들로부터 볼륨을 생성합니다.containerDefinitions
섹션의 컨테이너 정의mountPoints
를 사용하여 이러한 볼륨을 도커 컨테이너 안의 경로에 탑재합니다. - containerDefinitions
-
아래에서 세부적으로 설명하는 일련의 컨테이너 정의입니다.
- mTLS 인증(선택 사항)
-
(선택 사항) Amazon S3에서 프라이빗 리포지토리에 대한 인증 데이터가 포함된
.dockercfg
파일의 위치입니다.
컨테이너 정의 및 볼륨 섹션은 Amazon ECS 작업 정의 파일의 Dockerrun.aws.json
해당 섹션과 동일한 형식 지정을 사용합니다. 작업 정의 형식에 대한 자세한 내용과 작업 정의 파라미터의 전체 목록은 Amazon Elastic Container Service 개발자 안내서의 Amazon ECS 작업 정의를 참조하십시오.
볼륨 포맷
볼륨 파라미터는 Amazon EC2 컨테이너 인스턴스 내 폴더로부터 또는 (/var/app/current
로 배포된) 소스 번들로부터 볼륨을 생성합니다.
볼륨은 다음 형식으로 지정됩니다.
"volumes": [
{
"name": "volumename
",
"host": {
"sourcePath": "/path/on/host/instance
"
}
}
],
컨테이너 정의의 mountPoints
를 사용하여 이러한 볼륨을 도커 컨테이너 안의 경로에 탑재합니다.
Elastic Beanstalk는 각 컨테이너에 대해 하나씩 로그용 추가 볼륨을 구성합니다. 로그를 호스트 인스턴스에 쓰려면 도커 컨테이너에서 이러한 볼륨을 탑재해야 합니다.
자세한 내용은 다음 컨테이너 정의 형식 섹션의mountPoints
필드를 참조하십시오.
컨테이너 정의 형식
다음 예제에서는 컨테이너 정의 섹션에서 주로 사용되는 파라미터의 하위 세트를 보여 줍니다. 추가 선택적 파라미터를 사용할 수 있습니다.
Elastic Beanstalk 플랫폼은 ECS 컨테이너 정의를 포함하는 ECS 작업 정의를 생성합니다. Beanstalk는 ECS 컨테이너 정의를 위한 파라미터 하위 세트를 지원합니다. 자세한 내용을 알아보려면 Amazon Elastic Container Service 개발자 안내서의 컨테이너 인스턴스 AMI를 참조하세요.
Dockerrun.aws.json
파일에는 다음 필드가 포함된 하나 이상의 컨테이너 정의 객체가 포함됩니다.
- name
-
컨테이너의 이름입니다. 최대 길이 및 허용된 문자에 대한 자세한 내용은 표준 컨테이너 정의 파라미터를 참조하십시오.
- 이미지
-
도커 컨테이너를 구축할 온라인 도커 리포지토리의 도커 이미지 이름입니다. 다음 규칙에 유의하십시오.
-
Docker Hub 공식 리포지토리 안의 이미지는 단일 이름을 사용합니다(예:
ubuntu
또는mongo
). -
Docker Hub의 다른 리포지토리에 저장된 이미지는 조직 이름으로 한정됩니다(예:
amazon/amazon-ecs-agent
). -
Docker Hub 상의 다른 리포지토리 안의 이미지는 도메인 이름을 사용하여 추가로 한정됩니다(예:
quay.io/assemblyline/ubuntu
).
-
- 환경
-
컨테이너에 전달할 일련의 환경 변수입니다.
예를 들어, 다음 항목은 이름이
Container
이고 값이PHP
인 환경 변수를 정의합니다."environment": [ { "name": "Container", "value": "PHP" } ],
- 필수
-
컨테이너가 실패할 경우 작업을 중지해야 하면 true입니다. 필수적이지 않은 컨테이너는 인스턴스의 나머지 컨테이너에 영향을 미치지 않고 종료되거나 충돌할 수 있습니다.
- 메모리
-
컨테이너용으로 예약할 컨테이너 인스턴스에 있는 메모리 양입니다. 컨테이너 정의에서
memory
또는memoryReservation
파라미터 중 하나 또는 모두에 0이 아닌 정수를 지정하십시오. - memoryReservation
-
컨테이너용으로 예약할 메모리의 소프트 제한(MiB)입니다. 컨테이너 정의에서
memory
또는memoryReservation
파라미터 중 하나 또는 모두에 0이 아닌 정수를 지정하십시오. - mountPoints
-
탑재할 Amazon EC2 컨테이너 인스턴스의 볼륨과 도커 컨테이너 파일 시스템에서 볼륨을 탑재할 위치입니다. 애플리케이션 콘텐츠가 포함된 볼륨을 탑재하면 컨테이너가 소스 번들에서 업로드하는 데이터를 읽을 수 있습니다. 로그 데이터를 기록할 로그 볼륨을 탑재하면 Elastic Beanstalk가 이들 볼륨에서 로그 데이터를 수집할 수 있습니다.
Elastic Beanstalk는
/var/log/containers/
의 각 도커 컨테이너에 하나씩 컨테이너 인스턴스에 로그 볼륨을 만듭니다. 이러한 볼륨의 이름은containername
awseb-logs-
으로 지정되며, 컨테이너 파일 구조에서 로그가 기록되는 위치에 탑재해야 합니다.containername
예를 들어, 다음 탑재 지점은 컨테이너의 nginx 로그 위치를
nginx-proxy
컨테이너용으로 Elastic Beanstalk에서 생성된 볼륨에 매핑합니다.{ "sourceVolume": "awseb-logs-nginx-proxy", "containerPath": "/var/log/nginx" }
- portMappings
-
컨테이너에 있는 네트워크 지점을 호스트에 있는 지점에 매핑합니다.
- links
-
연결할 컨테이너의 목록입니다. 연결된 컨테이너는 서로를 검색하고 안전하게 통신할 수 있습니다.
- volumesFrom
-
다양한 컨테이너의 모든 볼륨을 탑재합니다. 예를 들어, 컨테이너에서
web
이라는 볼륨을 탑재하려면"volumesFrom": [ { "sourceContainer": "web" } ],
인증 형식 — 프라이빗 리포지토리의 이미지 사용
authentication
섹션에는 프라이빗 리포지토리에 대한 인증 데이터가 포함되어 있습니다. 이 항목은 선택 사항입니다.
authentication
파일의 Dockerrun.aws.json
파라미터에 인증 파일이 포함되어 있는 Amazon S3 버킷에 대한 정보를 추가합니다. authentication
파라미터에 유효한 Amazon S3 버킷과 키가 포함되어 있는지 확인하십시오. Amazon S3 버킷은 이를 사용 중인 환경과 동일한 리전에 호스팅되어야 합니다. Elastic Beanstalk는 다른 리전에 호스팅된 Amazon S3 버킷에서 파일을 다운로드할 수 없습니다.
다음 형식을 사용합니다.
"authentication": {
"bucket": "amzn-s3-demo-bucket
",
"key": "mydockercfg
"
},
인증 파일을 생성하고 업로드하는 방법에 대한 자세한 내용은 Elastic Beanstalk에서 프라이빗 리포지토리의 이미지 사용 단원을 참조하십시오.
Dockerrun.aws.json v2
다음 코드 조각은 두 개의 컨테이너가 있는 인스턴스에 대한 Dockerrun.aws.json
파일의 구문을 보여 주는 예입니다.
{
"AWSEBDockerrunVersion": 2,
"volumes": [
{
"name": "php-app",
"host": {
"sourcePath": "/var/app/current/php-app"
}
},
{
"name": "nginx-proxy-conf",
"host": {
"sourcePath": "/var/app/current/proxy/conf.d"
}
}
],
"containerDefinitions": [
{
"name": "php-app",
"image": "php:fpm",
"environment": [
{
"name": "Container",
"value": "PHP"
}
],
"essential": true,
"memory": 128,
"mountPoints": [
{
"sourceVolume": "php-app",
"containerPath": "/var/www/html",
"readOnly": true
}
]
},
{
"name": "nginx-proxy",
"image": "nginx",
"essential": true,
"memory": 128,
"portMappings": [
{
"hostPort": 80,
"containerPort": 80
}
],
"links": [
"php-app"
],
"mountPoints": [
{
"sourceVolume": "php-app",
"containerPath": "/var/www/html",
"readOnly": true
},
{
"sourceVolume": "nginx-proxy-conf",
"containerPath": "/etc/nginx/conf.d",
"readOnly": true
},
{
"sourceVolume": "awseb-logs-nginx-proxy",
"containerPath": "/var/log/nginx"
}
]
}
]
}