안녕하세요?
Container Image를 Pull로 가져와서 Image Build를 CI/CD 로 구성하는 작업들을 많이 하는데요. 이러한 작업을 할 때, 일반적으로 Pull로 가져오는 이미지들은 대부분 DockerHub로부터 가져옵니다. DockerHub에서는 사용자가 Image를 Pull 하는 부분에 대해서 아래와 같은 제한 정책을 가지고 있습니다. 대부분의 작업 환경은 Docker Pull을 하더라도 이미지가 이미 다운로드 되어 있다면, DockerHub로부터 Pull을 하지 않기 때문에, 아래 제한에 쉽게 걸리지는 않습니다.
저 같은 경우에도, 아래와 같은 제한이 있다는 것을 최근에 알게 됐습니다. Kubernetes를 라지 클러스터로 관리할 경우 DaemonSet을 사용할 경우 아래 제한은 절대로 크지가 않습니다. 그렇기 때문에, 이에 대한 대안을 구축해야 하는데요.
저의 경우에는 이미 AWS를 사용하기 때문에 ECR Pulblic Gallery(https://gallery.ecr.aws/) 에 이미지가 존재하면 해당 이미지를 사용하고 그렇지 않은 경에는 Private ECR에 올리는 것으로 결정을 했습니다.
Private ECR에 Image 업로드
ECR에 이미지를 업로드하는 방법은 간단합니다.
1. Image를 Pull 한다.
2. Pull 한 이미지를 Pirvate ECR로 TAG 명령어를 사용해서 새로 만든다.
3. Private ECR로 업로드 한다.
위 방법은 아래 명령어를 사용하면 손쉽게 DockerHub 로부터 이미지를 가져와서 Pirvate ECR에 이미지를 업로드할 수 있습니다.
# docker pull
$ docker pull alpine/git:2.43.0
2.43.0: Pulling from alpine/git
4abcf2066143: Pull complete
872b853fefe9: Pull complete
fcee26b351f4: Pull complete
Digest: sha256:05311acbba1148bc1cc667533c3cf356e0515f7627fad6e3e905aeeeca2a2c46
Status: Downloaded newer image for alpine/git:2.43.0
docker.io/alpine/git:2.43.0
### ECR에 로그인하는 과정이 필요합니다.
# tag
$ docker tag alpine/git:2.43.0 xxxxxxxxx.dkr.ecr.ap-northeast-2.amazonaws.com/alpine/git:2.43.0
# push
$ docker push xxxxxxxxx.dkr.ecr.ap-northeast-2.amazonaws.com/alpine/git:2.43.0
The push refers to repository [xxxxxxxxx.dkr.ecr.ap-northeast-2.amazonaws.com/alpine/git]
xxxxxxxxxxxx: Pushed
xxxxxxxxxxxx: Pushed
2.43.0: digest: sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx size: 946
'개발 > AWS EKS' 카테고리의 다른 글
[EKS] Gatekeeper (1) | 2024.04.15 |
---|---|
[K8S] Ephemeral Container (0) | 2024.03.07 |
[EKS] Knative volume support - PVC (0) | 2024.03.06 |
[Kubernetes] initContainer 와 containers의 volume 공유 (2) | 2024.02.07 |
Containerd와 AWS ECR login 방법 (1) | 2024.01.31 |