Amazon ECS에 대한 Fargate 컨테이너 이미지 가져오기 동작에서 Linux 컨테이너
모든 Fargate 태스크는 자체 일회용 단일 테넌트 인스턴스에서 실행됩니다. Fargate에서 Linux 컨테이너를 실행하면 컨테이너 이미지 또는 컨테이너 이미지 레이어가 인스턴스에 캐싱되지 않습니다. 따라서 태스크에 정의된 각 컨테이너 이미지에 대해 각 Fargate 태스크의 컨테이너 이미지 레지스트리에서 전체 컨테이너 이미지를 가져와야 합니다. 이미지를 가져오는 데 걸리는 시간은 Fargate 태스크를 시작하는 데 걸리는 시간과 직접적인 상관관계가 있습니다.
이미지 가져오기 시간을 최적화하려면 다음 사항을 고려하세요.
- 컨테이너 이미지 근접성
-
컨테이너 이미지를 다운로드하는 데 걸리는 시간을 줄이려면 데이터를 최대한 컴퓨팅에 가까운 곳에 두세요. 인터넷을 통해 또는 AWS 리전 간에 컨테이너 이미지를 가져오면 다운로드 시간에 영향을 미칠 수 있습니다. 태스크가 실행될 동일한 리전에 컨테이너 이미지를 저장하는 것이 좋습니다. Amazon ECR에 컨테이너 이미지를 저장하는 경우 VPC 인터페이스 엔드포인트를 사용하여 이미지 가져오기 시간을 더욱 단축하세요. 자세한 내용은 Amazon ECR 사용 설명서의 Amazon ECR 인터페이스 VPC 엔드포인트(AWS PrivateLink)를 참조하세요.
- 컨테이너 이미지 크기 줄이기
-
컨테이너 이미지의 크기는 다운로드 시간에 직접적으로 영향을 미칩니다. 컨테이너 이미지의 크기 또는 컨테이너 이미지 레이어 수를 줄이면 이미지를 다운로드하는 데 걸리는 시간을 줄일 수 있습니다. 가벼운 기본 이미지(예: 최소 Amazon Linux 2023 컨테이너 이미지)는 기존 운영 체제 기본 이미지에 기반을 둔 이미지보다 훨씬 작을 수 있습니다. 최소 이미지에 대한 자세한 내용은 Amazon Linux 2023 사용 설명서의 AL2023 최소 컨테이너 이미지를 참조하세요.
- 대체 압축 알고리즘
-
컨테이너 이미지 레이어는 컨테이너 이미지 레지스트리로 푸시할 때 압축되는 경우가 많습니다. 컨테이너 이미지 레이어를 압축하면 네트워크를 통해 전송되고 컨테이너 이미지 레지스트리에 저장해야 하는 데이터의 양이 줄어듭니다. 컨테이너 런타임에 의해 컨테이너 이미지 레이어가 인스턴스로 다운로드되면 해당 레이어의 압축이 해제됩니다. 사용된 압축 알고리즘과 런타임에 사용 가능한 vCPU의 양은 컨테이너 이미지 압축을 푸는 데 걸리는 시간에 영향을 미칩니다. Fargate에서는 태스크의 크기를 늘리거나 더 성능이 뛰어난 zstd 압축 알고리즘을 활용하여 압축 해제에 걸리는 시간을 줄일 수 있습니다. 자세한 내용은 GitHub의 ztsd
를 참조하세요. Fargate를 위한 이미지를 구현하는 방법에 대한 자세한 내용은 zstd 압축 컨테이너 이미지를 사용하여 AWS Fargate 시작 시간 단축 을 참조하세요. - 컨테이너 이미지 지연 로딩
-
큰 컨테이너 이미지(> 250mb)의 경우 모든 컨테이너 이미지를 다운로드하는 것보다 컨테이너 이미지를 지연 로드하는 것이 최적일 수 있습니다. Fargate에서는 Seekable OCI(SOCI)를 사용하여 컨테이너 이미지 레지스트리에서 컨테이너 이미지를 지연 로드할 수 있습니다. 자세한 내용은 GitHub의 soci-snapshotter
와 Seekable OCI(SOCI)를 사용하여 컨테이너 이미지 지연 로딩을 참조하세요.