S3를 컨테이너 레지스트리로 활용할 수 있다면?
AWS S3를 단순한 스토리지 서비스로만 생각하셨다면, 이런 가능성도 있는데요, S3를 컨테이너 레지스트리로 활용하여 Docker 이미지를 저장하고 배포할 수 있습니다. 특히 이미지 빌드와 배포 속도를 높이고자 하는 개발자들에게 유용한 방법이 될 수도 있습니다. S3를 컨테이너 레지스트리로 사용하는 방법 S3를 컨테이너 레지스트리로 활용하려면, S3 버킷을 HTTP를 통해 공개하고, 특정 경로에 이미지 파일을 업로드하면 됩니다. 이렇게 설정하면 docker pull 명령어를 통해 해당 버킷에서 이미지를 직접 가져올 수 있습니다. 예시: docker run --rm your-bucket-url/your-image 이 명령어를 실행하면 S3 버킷에 저장된 이미지를 가져와 컨테이너를 실행할 수 있습니다. S3와 ECR의 업로드 속도 비교 S3를 레지스트리로 사용하는 주요 이점 중 하나는 업로드 속도입니다. 테스트 결과, S3는 ECR보다 최대 8배 빠른 업로드 속도를 보였습니다. 이는 S3가 단일 레이어의 청크를 병렬로 업로드할 수 있기 때문입니다. 반면, ECR은 OCI 분산 사양을 준수하여 레이어를 순차적으로 업로드해야 하므로 속도가 느려집니다. 업로드 속도 비교: 서비스 최소 속도 최대 속도 ECR 24 MiB/s (8.2초) 28 MiB/s (7.0초) S3 115 MiB/s (1.7초) 190 MiB/s (1.0초) S3를 레지스트리로 사용할 때의 고려사항 S3는 전통적인 컨테이너 레지스트리가 아니므로, docker push 명령어를 직접 사용할 수 없습니다. 따라서 이미지를 S3에 업로드하려면 AWS SDK 등을 활용하여 수동으로 업로드해야 합니다. 또한, 인증 및 권한 관리를 위해 S3 버킷 정책을 적절히 설정해야 합니다. S3 버킷 정책 설정 예시: { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::your-bucket-name/*" } ] } 이러한 정책을 통해 모든 사용자가 버킷의 객체를 읽을 수 있도록 설정할 수 있습니다. 결론 S3를 컨테이너 레지스트리로 활용하면 업로드 속도를 크게 향상시킬 수 있습니다. 다만, 전통적인 레지스트리 기능이 부족할 수 있으므로, 프로젝트의 요구사항에 맞게 적절히 활용하는 것이 중요합니다. 특히 이미지 빌드와 배포 속도가 중요한 경우, S3를 활용한 레지스트리 구축을 고려해 볼 만합니다. 출처: Using S3 as a container registry