-
[Docker] 이미지 배포컨테이너/도커 2021. 1. 6. 18:27
이미지를 생성했다면 이를 다른 엔진에 배포할 방법이 필요하다.
save나 export와 같은 방법으로 이미지를 단일 파일로 추출해서 배포하게 되면 이미지 파일의 크기가 너무 크거나 도커 엔진의 수가 많다면 굉장히 비효율적이게 된다. 이럴 때 도커의 이미지 구조인 레이어 형태를 이용해야 한다!
이미지 배포 방법
- 도커 허브 : 도커에서 공식적으로 제공하는 도커 허브 이미지 저장소.
- 사설 레지스트리 : 사용자가 직접 이미지 저장소를 만든 후 해당 레포지토리에 저장.
1. 도커 허브 저장소
저장소에 이미지 올리기
docker commit [컨테이너명] [이미지] # docker commit commit_container my-image-name:0.0
로그인
docker login Username : Password: Login Succeeded // Username과 Password를 입력 시
push
# docker push seho100/my-image-name:0.0 dasdasdadweqwe: Pushed 13431fsdfe211d: Mounted from library/ubuntu 213sdfs132321s: Mounted from library/ubuntu gdffsddasdwq12: Mounted from library/ubuntu dasdw132rthr45: Mounted from library/ubuntu dsfrhet143sd1d: Mounted from library/ubuntu
위 명령어로 로그인한 뒤 push 명령어를 입력해 이미지를 저장소에 올릴 수 있다.
명령어의 출력 결과를 보면 하나의 레이어만 저장소로 전송되고, 나머지 레이어는 ubuntu:14.04 이미지에서 생성되어 도커 허브의 우분투 이미지 저장소에 이미 존재하므로 전송되지 않았다.
이미지 내려받기
# docker pull seho100/my-image-name:0.0
2. 도커 사설 레지스트리
사설 레지스트리 컨테이너 생성
레지스트리 컨테이너는 기본적으로 5000번 포트를 사용하므로 -p 옵션으로 컨테이너의 5000번 포트를 호스트의 5000번 포트와 연결한다. 이 포트로 레지스트리 컨테이너의 RESTful API를 사용할 수 있다.
# docker run -d --name myregistry \ -p 5000:5000 \ --restart=always \ registry:2.6
-restart : --restart 옵션은 컨테이너가 종료됐을 때 재시작에 대한 정책을 설정.
-always : 도커 호스트나 도커 엔진을 재시작하면 컨테이너도 함께 재시작됨.
아래 명령어는 레지스트리 컨테이너가 정상적으로 작동하는지 확인하는 코드이다. curl은 HTTP 요청을 보내느내 도구 중 하나이다.
# curl localhost:5000/v2/
사설 레지스트리에 이미지 Push하기
my-image-name 이미지를 레지스트리 컨테이너에 올려보자. tag를 이용해 이미지의 이름을 추가하고 진행한다.
# docker tag my-image-name:0.0 ${DOCKER_HOST_IP}:5000/my-image-name:0.0 /* 현재 만든 레지스트리 컨테이너는 HTTPS를 사용하지 못하므로 (별도의 인증 과정 필요) 도커 옵션을 수정해 테스트만 진행해본다 */ DOCKER_OPTS="--insecure-registry=${DOCKER_HOST_IP}:5000" # docker push ${DOCKER_HOST_IP}:5000/my-image-name:0.0 // Push # docker pull ${DOCKER_HOST_IP}:5000/my-image-name:0.0 // Pull # docker rm --volumes myregistry // 레지스트리 컨테이너 삭제 및 -volumes 옵션을 통해 volume 또한 삭제
'컨테이너 > 도커' 카테고리의 다른 글
[Docker] 도커 컴포즈 (0) 2021.01.13 [Docker] 도커 이미지 (0) 2021.01.02