이번에는 다른 사람에게 이미지를 공유하는 방법에 대해 알아본다.
이미지를 내려받는 곳
지금까지 내려받았던 이미지
는 도커 허브에 저장된 것이다.
만약 직접 만든 이미지를 다른 사람들에게 공유하고 싶다면 도커 허브
에 이미지를 올리면 된다.
또는 비공개로 사용하는 도커 허브 같은 장소
도 만들 수 있다.
도커 허브와 도커 레지스트리
도커 레지스트리
란 이미지를 배포하는 장소를 의미한다.
공개/비공개 여부와 상관없이 이미지가 배포되는 곳은 모두 도커 레지스트리
이다.
도커 레지스트리는 기업이나 개인도 운영할 수 있으므로 전 세계적으로 많은 도커 레지스트리가 존재한다.
다만, 외부에 공개되어 있지 않다면 도커 레지스트리에 접속할 수 없기 때문에 거기에 있는 이미지를 사용할 수 없다.
도커 허브
는 Docker 제작사에서 운영하는 공식 도커 레지스트리
를 말한다.
아파치, MySQL, 우분투의 공식 이미지 모두 도커 허브에 참여해 도커 허브에 이미지를 배포한다.
레지스트리(registry) vs 리포지토리(repository)
- 레지스트리 : 이미지를 배포하는 장소
- 리포지토리 : 레지스트리를 구성하는 단위
ex) CAT
이라는 회사가 A, B라는 소프트웨어
를 만든다고 하자
그러면 CAT
이라는 이름의 도커 레지스트리
를 구성하는 것들로 A 리포지토리
, B 리포지토리
가 존재하게 된다.
도커 허브에는 리포지토리
가 각각 ID를 갖게 되어 있다.
따라서, 도커 허브
는 각각의 회사나 개인이 가진 레지스트리가 여럿 모인 형태가 된다.
태그와 이미지 업로드
이미지를 업로드 할 때 태그
를 부여해야 한다.
이미지 이름과 태그
태그는 아래의 형식을 가진다.
레지스트리_주소/리포지토리_이름:버전
위 형식을 통해 레지스트리 주소
와 버전
을 추가해 정식명칭을 만든다.버전
은 생략할 수 있지만 나중에 다루기 복잡해질 수 있기 때문에 따로 관리하고 싶다면 붙이는 것이 좋다.
ex) 여러 상황의 예시
상황 | 태그 |
---|---|
자신의 PC에서 만든 레지스트리 & 리포지토리 이름은 my, 버전은 13 | localhost/my:13 |
레지스트리 도메인이 zozo.comm & 리포지토리 이름은 my, 버전은 13 | zozo.comm/my:13 |
도커 허브의 ID가 dododo & 리포지토리 이름은 my, 버전은 13 | dododo/my:13 |
이미지에 태그를 부여해 복제하는 커맨드
기본적인 내용은
1) 원래 있던 이미지 이름을 태그로 변경
2) 이름이 변경된 이미지를 복제하는 동작을 실행
- 기본 형식
docker tag 원래_이미지_이름 레지스트리_주소/리포지토리_이름:버전
그렇기 때문에 위 명령어를 실행하고 나서 이미지 목록을 확인해보면 원래 이미지
와 태그가 부여된 이미지
둘 다 존재한다는 걸 알 수 있다.
이미지를 업로드하는 커맨드 (docker push
커맨드)
- 기본 형식
docker push 레지스트리_주소/리포지토리_이름:버전
(간단히 말하면 docker push 태그)
태그는 레지스트리_주소/리포지토리_이름:버전
형식의 하나의 이름이다.
여기에 같이 작성된 레지스트리 주소
를 통해 어느 레지스트리로 업로드할 지 태그로 판단할 수 있다.
즉, 도커 엔진은 태그에 포함된 레지스트리 주소
의 도메인에 있는 레지스트리
로 업로드를 시도한다.
리포지토리는 처음 업로드 할 때는 존재하지 않고 push 커맨드를 실행하면서 생성된다.
레지스트리 만드는 방법
비공개 레지스트리 만들기
간단하게 레지스트리를 만드는 공식 이미지(registry)
를 사용해서 컨테이너를 만들면 된다.
즉, 레지스트리도 도커를 통해 운영할 수 있다.
그렇게, 컨테이너를 만들면 사용자는 레지스트리에 로그인
한 다음에 이미지를 저장할 곳
으로 앞서 만든 레지스트리
를 지정하면 된다. 이때, 포트는 5000번
을 사용한다.
docker run -d -p 5000:5000 registry
도커 허브 사용
도커 허브 주소 해당 주소에 가입해서 이용하면 된다.
내가 만든 이미지를 도커 허브
에 업로드하면 전 세계 사람들에게 이미지를 공개할 수 있다. 물론, 비공개 설정을 하면 이미지를 공개하지 않을 수도 있다.
- push 커맨드로 respository를 만들었다면 자동으로 public 상태가 된다.
'Docker' 카테고리의 다른 글
[Docker] 7-2. 도커 컴포즈 설치 및 사용법 (0) | 2023.05.30 |
---|---|
[Docker] 7-1. 도커 컴포즈란? (0) | 2023.05.30 |
[Docker] 6-5. 컨테이너 개조 (0) | 2023.05.29 |
[Docker] 6-4. 컨테이너로 이미지 만들기 (0) | 2023.05.28 |
[Docker] 6-3. 볼륨 마운트 (0) | 2023.05.28 |