Docker Image 생성 및 docker hub에 이미지 업로드
Docker Image 생성 및 docker hub에 이미지 업로드
· Version : Docker
컨테이너는 기본적으로 이미지를 사용하여 생성하며, 컨테이너 생성 후 사용자 변경 부분에 대해서는 필요에 따라 새로운 이미지를 만들어서 배포하거나 재사용하기도 한다. 이번 포스트에서는 docker hub에서 이미지를 다운로드 (Pull), 업로드(push) 및 이미지를 생성(commit)하는 방법에 대해서 알아본다.
도커는 기본적으로 docker hub(https://hub.docker.com/)라는 중앙 이미지 저장소에서 이미지를 내려 받는다. 아래 그림처럼 docker hub는 도커가 공식적으로 제공하는 이미지 저장소로 누구나 가입 후 이미지를 내려 받을 수 있다. 또한 사용자 이미지를 도커 허브에 업로드하여 다른 사람과 공유할 수 있다.
[출처] https://www.itzgeek.com/how-tos/linux/working-with-docker-images-building-docker-images.html
사용자가 docker create, docker run, docker pull의 명령을 실행하면 로컬에 해당 이미지가 없을 경우 docker hub에서 해당 이미지를 검색하여 다운로드 받는다. 대부분의 이미지가 공식적으로 제공되어 있기 때문에 직접 이미지를 만들어 사용하지 않아도 되므로 빠르고 편리하게 개발 및 운영 환경을 구축 할 수 있다. 아래 명령어는 docker hub에 이미지가 있는지 확인하는 명령어로 공식 이미지의 경우 “OFFICIAL” 라벨이 부여되어 있으며 “STARS”는 해당 이미지가 사용자로부터 얼마나 즐겨찾기가 되었는지를 나타낸다.
docker search nginx |
docker hub로 부터 이미지를 다운로드 받으려면 pull 명령을 사용한다.
docker pull nginx |
베이스 이미지로부터 컨테이너를 생성하고 사용자가 변경 사항을 만들었다면 docker commit 명령을 사용하여 현재 컨테이너를 이미지로 만들 수 있다. 아무런 옵션을 사용하지 않으면 태그는 자동적으로 “latest”로 설정된다. -a 옵션은 작성자를 나타내며, -m은 커밋 메시지를 작성한다. 아래 스크립트는 nginx 라는 컨테이너를 nginx_sqlmvp:first로 이미지를 생성한다.
docker commit nginx nginx_custom docker commit -a "sqlmvp" -m "my image" nginx nginx-sqlmvp:first |
로컬에서 생성된 이미지를 공유하려면 리포지토리가 있어야 한다. Docker hub는 누구나 가입해서 무료로 리포지토리를 사용할 수 있다. 무료 계정의 경우 리포지토리가 퍼블릭이며, 유료로 사용할 경우 프라이빗 리포지토리를 이용할 수 있다. 또한 docker hub외에 프라이빗 리포지토리를 구축해서 사용할 수 도 있다. 아래 스크립트는 docker hub에 로컬의 이미지를 업로드(push)한다. docker hub에 업로드하기 전에 이미지에 리포지토리와 태그를 만들어야 한다.
Syntax : docker tag image username/repository:tag Ex) docker tag nginx_sqlmvp:first sqlmvp/nginx-sqlmvp:first |
Syntax : docker push username/repository:tag Ex) docker push sqlmvp/nginx-sqlmvp:first |
[참고자료]
· docker commit : https://docs.docker.com/engine/reference/commandline/commit/
· docker pull : https://docs.docker.com/engine/reference/commandline/pull/
· docker push : https://docs.docker.com/engine/reference/commandline/push/
2019-02-08 / Sungwook Kang / http://sqlmvp.kr
Docker, 이미지 생성, docker commit, docker push, docker tag, 도커 허브, 도커 커밋