DevBoi

[AWS] Docker 이미지 ECR에 올리기 본문

Infra/[AWS]

[AWS] Docker 이미지 ECR에 올리기

HiSmith 2023. 6. 8. 18:15
반응형

Docker image를 허브에는 많이올려봤다. 허브에 올리고 ec2에서 다시 풀 받고...

근데 AWS에서 hub같은 공간이 있다. ECR 

뭐 컨테이너 레지스트리 어쩌고 저쩌고 무튼, 쉽게 얘기하면 프라이빗 이미지 저장소로 이해하면된다.

 

이제 localimage를 ECR에 올리는 방법에 대해 알아보자

ECR에 이미지를 올리기 위해서는 먼저 로그인을 해야한다.

도커 허브에 올릴려면 docker login 으로 허브에 접속하듯이, aws도 일정기간 보장되는 자격증명이 필요하다.

 

aws ecr get-login-password --region ap-northeast-2 --no-verify-ssl

-> 이렇게 하면 패스워드가 나온디.

docker login --username AWS <ecr주소>

ecr 주소는 9231313.~~~.amazon.com이다. 

그 다음에 이걸 치면 비밀번호를 입력하라고 나온다.

그러면 위의 명령에서 나온 비밀번호를 입력하면된다.

 

쉘스크립트 지정 방식으로 변수로 줄수도 있지만, 그건 다음에...

무튼 이런식으로 하면 로그인이 된다.

 

하지만 때에 따라서 방화벽이 막혀있는 경우가 있다.

(회사에서 막거나 쓸데없이 방화벽이 많이 막힌곳 아니면 쓸데있이 방화벽이 많이 필요한곳)

x509(인증서 에러) 가 발생하는 경우인데, 이런경우에 대해서도 알아보자

 

1) openssl connect로 해당 인증서를 가져오기

openssl s_client -connect <ecr주소:포트> | tee certlog

이렇게 하면 해당 certlog가 남게 된다.

즉 ecr주소로 커넥트하고, certlog가 파일로 저장이 되는것이다.

 

openssl x509 -inform PEM -in certlog -text -out certdata

그리고 위의 명령어로 치면, 첫번째 명령어로 쳐서 나온 certlog를 기반으로 pem확장자 파일인 certdata라는 파일을 만든다.

cat certdata >> /usr/share/ca-certificates/extra/<ecr주소>.crt

 

위의 명령으로 해당 certdata파일을 ecr주소가 포함된 crt파일 로 내보내준다.

그리고 인증서 구성 디패키징

dpkg-reconfigure ca-certificates

이렇게 하면, 해당 인증이 완료되어 로그인을 할 수 있다.

 

근데 여기서 질문 왜 /usr/share/ca-certificates/extra 에 넣어야 되지? 여기뭔데?

다들 여기에 넣으라고만 하지 왜 넣는지는 말안해준다

어떻게 동작하는데?

우선 dpkg-reconfigure는 데비안 패키지 관리 시스템의 기초가 되는 소프트웨어이다.

저기 ca-certificates말고 iptables-persistent를 하면, iptable이 재구성된다.

그러면 저 명령어는 어떻게 인증서를 가지고 올수 있을까?

답은

/etc/ca-certification.conf 에 있다.

 

 

저기 /usr/share/ca-certificates라는 경로가 명시되어있고, 해당 경로에서 들고 온다는걸 추측할 수 있다.

그리고 /etc/ca-certification.conf 파일을 보게 되면, 해당 인증서가 추가됨을 볼 수 있다.

 

이제 image tag를 달아야 한다.

docker image를 허브에 올릴때와 동일하게 태그는 <repo>/image:tag

규칙으로 태그를 달아준다.

docker tag <localimage> <tag로 바꿀 이미지>

<tag로 바꿀 이미지> 이건 <ecr주소>/이미지:태그 요로케 태그를 해주고

docker push <tag로 바꿀 이미지>

 

해당 푸쉬까지 하면, ecr에서 정상적으로 이미지가 보이게 되고 ec2내에서 혹은 같은 VPC내에서 잘 사용할 수 있고 관리가 된다.

반응형

'Infra > [AWS]' 카테고리의 다른 글

[AWS] Mariadb encoding 오류  (1) 2023.10.02
[Aws] Docker-compose 구성하기  (0) 2023.07.30
[AWS] S3 구성  (0) 2023.06.08
[AWS] Multiplatform Docker image를 빌드하는 법  (0) 2023.05.28
[AWS] EC2에 RDS 세팅하기  (0) 2023.05.25