CannotCreateContainerError: API error (500): devmapper - Amazon Elastic Container Service

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

CannotCreateContainerError: API error (500): devmapper

다음 Docker 오류는 컨테이너 인스턴스의 씬(thin) 풀 스토리지가 꽉 찼으며 Docker 대몬이 새 컨테이너를 만들 수 없음을 나타냅니다.

CannotCreateContainerError: API error (500): devmapper: Thin Pool has 4350 free data blocks which is less than minimum required 4454 free data blocks. Create more free space in thin pool or use dm.min_free_space option to change behavior

기본적으로 버전 2015.09.d 이상의 Amazon ECS 최적화 Amazon Linux AMI는 /dev/xvda에서 연결되고 파일 시스템의 루트로 마운트되는 운영 체제를 위한 8GiB 볼륨으로 시작됩니다. 여기에 Docker가 이미지 및 메타데이터 저장에 사용하는 /dev/xvdcz에서 연결된 22GiB의 볼륨이 추가됩니다. 이 스토리지 공간이 가득 찬 경우 Docker 대몬은 새 컨테이너를 생성할 수 없습니다.

컨테이너 인스턴스에 스토리지를 추가하는 가장 쉬운 방법은 기존 인스턴스를 종료하고 데이터 스토리지 볼륨이 더 큰 새 인스턴스를 시작하는 것입니다. 하지만 이것이 불가능한 경우, Amazon ECS 최적화 AMI의 절차에 따라 Docker가 사용하는 볼륨 그룹에 스토리지를 추가하여 논리 볼륨을 확장할 수 있습니다.

컨테이너 인스턴스 스토리지가 너무 빨리 채워지는 경우, 몇 가지 조치로 이를 완화할 수 있습니다.

  • 씬 폴링 정보를 보려면 컨테이너 인스턴스에서 다음 명령을 실행합니다.

    docker info
  • (Amazon ECS 컨테이너 에이전트 1.8.0 이상) 중지되거나 종료된 컨테이너가 컨테이너 인스턴스에 남아 있는 시간을 줄일 수 있습니다. ECS_ENGINE_TASK_CLEANUP_WAIT_DURATION 에이전트 구성 변수는 작업이 중지된 때부터 Docker 컨테이너가 제거될 때까지 기다리는 시간을 설정합니다(기본값: 3시간). 이때 Docker 컨테이너 데이터가 제거되므로 이 값을 너무 낮게 설정하면 중지된 컨테이너를 제거하기 전에 검사하거나 로그를 확인하지 못할 수 있습니다. 자세한 설명은 Amazon ECS 컨테이너 에이전트 구성 섹션을 참조하세요.

  • 실행 중이 아닌 컨테이너와 사용하지 않는 이미지를 컨테이너 인스턴스에서 제거할 수 있습니다. 다음 예제 명령을 사용하여 중지된 컨테이너와 사용하지 않은 이미지를 수동으로 제거할 수 있습니다. 삭제된 컨테이너는 나중에 검사할 수 없으며, 삭제된 이미지는 이미지에서 새 컨테이너를 시작하기 전에 다시 가져와야 합니다.

    실행되고 있지 않은 컨테이너를 제거하려면 컨테이너 인스턴스에서 다음 명령을 실행합니다.

    docker rm $(docker ps -aq)

    사용하지 않은 이미지를 제거하려면 컨테이너 인스턴스에서 다음 명령을 실행합니다.

    docker rmi $(docker images -q)
  • 컨테이너 내에서 사용하지 않는 데이터 블록을 제거할 수 있습니다. 다음 명령을 사용하여 실행 중인 컨테이너에서 fstrim을 실행하고 컨테이너 파일 시스템에서 사용하지 않은 데이터 블록을 삭제할 수 있습니다.

    sudo sh -c "docker ps -q | xargs docker inspect --format='{{ .State.Pid }}' | xargs -IZ fstrim /proc/Z/root/"