도커 허브 private image를 Azure Container Instance에서 사용하기

devkingsejong·2021년 4월 22일
0

삽질

목록 보기
1/3
post-thumbnail

Azure Container Instance(ACI)는 이미 빌드된 Container를 바로 인스턴스로 올릴 수 있는 서비스입니다.
Public Repo로 부터 이미지를 불러올 경우, 별 이슈가 없었으나, Docker hub private repo로 부터 이미지를 불러올 때 발생했던 권한 관련 이슈를 해결하는 방법을 적고자 합니다.

1. Access Token은 중요하지 않다.

이미지 레지스트리 암호란 에는 실제 암호를 넣어도 되고, 설정 페이지에서 발급 받은 Access-token을 넣어도 상관 없습니다. 둘 중 편한 것을 사용하시면 됩니다.(물론 보안적인 측면에서 Token을 사용하시는 것이 좋습니다.)

2. 로그인 서버의 주소는 index.docer.io, docker.io 모두 상관 없다.

인터넷을 통해 검색하다 보면, 여러개의 도커 허브 로그인 서버가 검색되는데,
대표적으로 나오는 index.docker.iodocker.io 두개 모두 정상적으로 동작합니다.

다만, 아래 3번과 같이 컨테이너 레지스트리 주소와 반드시 일치해야합니다.

3. 이미지 이름 앞에 컨테이너 레지스트리 주소를 추가해 주어야 한다.

일반적으로 public repo로 부터 이미지를 가져올 때에는 USER/REPO:VERSION와 같이 설정해 주면 가져올 수 있습니다.
하지만, Private Repo로 부터 가져올 때에는 조금 다르게 동작합니다. Azure Portal에서의 설명을 보면 레지스트리를 지정하지 않으면 자동으로 Docker Hub로 지정된다고 나와있으나, 그렇게 동작하지 않는 것 같습니다.

실패한 경우는 아래와 같았습니다.

  1. USER/REPO:VERSION 형태로 입력
  2. REPO:VERSION 형태로 입력
  3. USER/REPO 형태로 입력(환경 변수로 버전 지정)
  4. REPO 형태로 입력(환경 변수로 버전 지정)
  5. 로그인 서버 주소와 다른 값/USER/REPO:VERSION 형태로 입력

결론적으로 Portal을 통해 ACI를 생성할 때에는 위 이미지와 같이 CR_Name/User/Repo:Version과 같은 형태로 넣어주어야 합니다.(CR명이 위 2번에서의 주소와 같아야 합니다.)

+a) 이미지 관련 설정을 제외하고 다른 부분은 틀리더라도 컨테이너 생성 자체가 실패하지는 않는다.

일반적으로 구독에 대한 권한이 없거나, 사용량 등을 초과해서 발생하는 에러를 제외하고는, 일반적으로 Open Port관련 설정이나, 환경변수 그리고 실행 옵션 등과 같은 정보는 틀리더라도 우선 이미지를 받아오고, 생성하는 데에는 문제가 없습니다. 권한 관련 오류가 뜬다면 이미지 관련 설정을 주로 보는 것이 맞습니다.

마치며

Azure portal을 이용하다보면 조금 다르게 동작하는 부분이나(cli로는 가능, 포탈에서는 불가능 등),
버그(권한, 구독, 테넌트 등과 같은 부분은 적용되는데 최소 1시간 ~ 하루가 걸리기도 함)가 발생하기도 합니다.
앞으로는 귀찮아도 개발 단계에서부터 cli만 사용하거나, 테라폼을 애용해야 겠네요,, 아님 ACR을 이용하거나..

1개의 댓글

comment-user-thumbnail
2021년 5월 20일

다행히 이번에 개선되면서 이 이슈는 없어졌네요.. ^^

답글 달기