Amazon ECS용 Docker 볼륨 예제
Amazon ECS용 Docker 볼륨 예제
다음 예제들은 컨테이너에 임시 스토리지를 제공하는 방법, 여러 컨테이너에 공유 볼륨을 제공하는 방법, 그리고 컨테이너에 NFS 영구 스토리지를 제공하는 방법을 보여 줘요.
출처: 문서
본문
Docker 볼륨을 사용해 컨테이너에 임시 스토리지 제공
이 예제에서 컨테이너는 태스크가 끝난 후 폐기되는 빈 데이터 볼륨을 사용해요. 한 예로 태스크 중에 임시 파일 스토리지 위치에 접근해야 하는 컨테이너가 있을 수 있어요. 이 작업은 Docker 볼륨을 사용해 달성할 수 있어요.
태스크 정의의 volumes 섹션에서 name과 DockerVolumeConfiguration 값으로 데이터 볼륨을 정의해요. 이 예제에서는 태스크가 중지된 후 볼륨이 삭제되도록 scope를 task로 지정하고 내장된 local 드라이버를 사용해요.
"volumes": [
{
"name": "scratch",
"dockerVolumeConfiguration" : {
"scope": "task",
"driver": "local",
"labels": {
"scratch": "space"
}
}
}
]
containerDefinitions 섹션에서 정의된 볼륨의 이름을 참조하는 mountPoints 값과 컨테이너에서 볼륨을 마운트할 위치인 containerPath 값으로 컨테이너를 정의해요.
"containerDefinitions": [
{
"name": "container-1",
"mountPoints": [
{
"sourceVolume": "scratch",
"containerPath": "/var/scratch"
}
]
}
]
Docker 볼륨을 사용해 여러 컨테이너에 영구 스토리지 제공
이 예제에서는 여러 컨테이너가 사용할 공유 볼륨을 원하고, 그것을 사용하는 단일 태스크가 중지된 후에도 그 볼륨이 유지되길 원해요. 내장된 local 드라이버가 사용되고 있어요. 이는 볼륨이 여전히 컨테이너 인스턴스의 수명 주기에 묶여 있기 때문이에요.
태스크 정의의 volumes 섹션에서 name과 DockerVolumeConfiguration 값으로 데이터 볼륨을 정의해요. 이 예제에서는 볼륨이 유지되도록 scope를 shared로 지정하고, 볼륨이 사용을 위해 생성되도록 autoprovision을 true로 설정해요. 그런 다음 내장된 local 드라이버도 사용해요.
"volumes": [
{
"name": "database",
"dockerVolumeConfiguration" : {
"scope": "shared",
"autoprovision": true,
"driver": "local",
"labels": {
"database": "database_name"
}
}
}
]
containerDefinitions 섹션에서 정의된 볼륨의 이름을 참조하는 mountPoints 값과 컨테이너에서 볼륨을 마운트할 위치인 containerPath 값으로 컨테이너를 정의해요.
"containerDefinitions": [
{
"name": "container-1",
"mountPoints": [
{
"sourceVolume": "database",
"containerPath": "/var/database"
}
]
},
{
"name": "container-2",
"mountPoints": [
{
"sourceVolume": "database",
"containerPath": "/var/database"
}
]
}
]
Docker 볼륨을 사용해 컨테이너에 NFS 영구 스토리지 제공
이 예제에서 컨테이너는 태스크가 시작될 때 자동으로 마운트되고 태스크가 중지되면 마운트 해제되는 NFS 데이터 볼륨을 사용해요. 이는 Docker 내장 local 드라이버를 사용해요. 한 예로 로컬 NFS 스토리지를 보유하고 ECS Anywhere 태스크에서 그 스토리지에 접근해야 하는 경우가 있을 수 있어요. 이는 NFS 드라이버 옵션과 함께 Docker 볼륨을 사용해 달성할 수 있어요.
태스크 정의의 volumes 섹션에서 name과 DockerVolumeConfiguration 값으로 데이터 볼륨을 정의해요. 이 예제에서는 태스크가 중지된 후 볼륨이 마운트 해제되도록 scope를 task로 지정해요. local 드라이버를 사용하고 driverOpts를 type, device, o 옵션으로 적절히 구성해요. NFS_SERVER를 NFS 서버 엔드포인트로 바꾸세요.
"volumes": [
{
"name": "NFS",
"dockerVolumeConfiguration" : {
"scope": "task",
"driver": "local",
"driverOpts": {
"type": "nfs",
"device": "$NFS_SERVER:/mnt/nfs",
"o": "addr=$NFS_SERVER"
}
}
}
]
containerDefinitions 섹션에서 정의된 볼륨의 이름을 참조하는 mountPoints 값과 컨테이너에서 볼륨을 마운트할 위치인 containerPath 값으로 컨테이너를 정의해요.
"containerDefinitions": [
{
"name": "container-1",
"mountPoints": [
{
"sourceVolume": "NFS",
"containerPath": "/var/nfsmount"
}
]
}
]