docker

docker image 배포

vitamin3000 2025. 7. 9. 12:01

 

이전 포스트에서는 이미지를 생성 및 추출하는 방법에 대해 알아보았다.

이번엔 생성된 이미지를 다른 도커 엔진에 배포해보고자 한다.

이를 위해서 이전 방식인 save나 export같은 방법으로 이미지를 단일 파일로 추출해서 배포할 수도 있지만 이미지 파일의 크기가 너무 크거나 도커엔진의 수가 많다면 이미지를 파일로 배포하기 어렵고 도커의 이미지 구조인 레이어 형태를 이용하지 않으므로 매우 비효율 적이다.

 

이를 해결하는 방법으로

1. 도커 허브 이미지 저장소 이용

2. 도컬 사설 레지스트리

가 있는데, 그럼 아래에서 자세히 살펴보자

 

도커 허브 이미지 저장소 이용

도커 허브는 도커 이미지를 저장하기 위한클라우드 서비스이다.

사용자는 단순히 이미지를 올리고 내려받기만 하면 되므로 매우 간단하지만, 결제를 하지 않으면 비공개 저장소 수에 제한이 존재하는 것이 단점이다.

공개 저장소는 무료로 사용할 수 있으므로 만든 이미지를 다른 이에게 공개해도 상관없다면 도커 허브를 사용하자

 

아래는 도커허브 사이트이다.

다양한 컨테이너를 확인할 수 있다.

 

 

그렇다면, 직접 생성했던 이미지를 저장소에 올려보자!

 

먼저 로그인 후에  Create a Repository를 들어가자

 

 

이름과 설명을 입력하고 Create 버튼을 누른다.

여기서, 알 수 있듯, 1개의 private repositories가 무료로 제공됨을 확인할 수 있다.

 

 

2025/07/09 현재 아래의 오류가 발생하여 구글에 검색해보니

 

 

나같은 사람이 많다.. 따라서 여기선 방법만 설명하기로 한다.

 

 

우선, 정상적으로 레포지토리가 생성되었으면 웹 페이지로 이동할 것이고, 

이제 방금 생성한 저장소에 이미지를 올려보자

 

ubuntu:14.04 이미지에 test파일이라는 변경사항을 만들고 이것을 commit하여 새로운 이미지로 만들었다.

 

오타가 있어서 오류가 발생했어요..

tag를 통해 이미지의 이름을 추가하였다. 기존의 이름이 사라지는 것이 아니고 같은 이미지를 가리키는 새로운 이름을 추가했을 뿐이다.

 

그 근거로 Image ID가 동일하다.

 

이제 저장소에 올리는 권한을 얻기 위해 도커 허브 서버에 로그인하여야 한다

docker login

 

위 명령어를 입력하고, 아이디와 비밀번호를 입력하여 로그인 할 수 있다.

 

도커 엔진에서 로그인한 정보는 /[계정명]/.docker/config.json 파일에 저장된다

로그인 정보를 삭제하고 싶다면 docker logout을 입력한다.

 

자, 이제 push 명령어를 입력해 이미지를 저장소에 올려보자

 

chajaesik은 사용자 계정 이름, my-image-name은 저장소 이름을 의미한다.

 

이제 도커에서 이 이미지를 내려받으려면 별도로 로그인하지않고 아래의 명령어를 입력하면 된다.

docker pull chajaesik/my-image-name:0.0

 

나는 저장소가 실제로 존재하지 않아 아래의 오류가 발생한다