최근에 쿠버네티스를 공부할 일이 있어서 보고 있는데, 쿠버네티스 자체가 도커(Docker) 오케스트레이션을 해주는 툴이라 도커에 대한 개념이 없으니, 공부하기가 힘들었습니다. 그래서 이렇게 급하게 책을 사서 공부하면서 내용을 정리하고자 합니다.
해당 내용은 위키북스에서 나온 시작하세요! 도커 책을 보면서 정리한 내용입니다. 책의 내용이 매우 좋아서 강추합니다.
이번에는 도커의 이미지를 다루는 방법을 보도록 하겠습니다.
도커 이미지
출처 : Google
도커는 기본적으로 도커 허브라고 하는 중앙 이미지 저장소에서 이미지를 내려받습니다. 도커 허브는 도커가 공식적으로 제공하고 있는 이미지 저장소로 쉽게 올리고 내려받을 수 있습니다.
도커 이미지 생성
먼저 commit_test
라는 ubuntu
컨테이너를 하나 만들도록 하겠습니다.
$ docker run -i -t --name commit_test ubuntu:14.04
root@30cdf0bc0e38:/# exit
기존에 있는 이미지로 새로운 이미지를 만들기 위해서는 docker commit
명령어를 사용하면 됩니다.
$ docker commit \
> -a "jungwoon" \ # -a: author, 이미지의 작성자
> -m "my first commit" \ # -m: messages, 커밋 메시지
> commit_test \ # 복사하고자 하는 이미지
> commit_test:first # 새로 만드는 이미지:[태그], 태그 생략시 'latest'로 붙음
이제 이미지가 잘 만들어졌는지 확인해보도록 하겠습니다.
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
commit_test first 750b35824fd8 About a minute ago 188MB
wordpress latest a1dc25194151 8 days ago 420MB
nginx latest 7042885a156a 3 weeks ago 109MB
mysql 5.7 ba7a93aae2a8 3 weeks ago 372MB
mongo latest 7177e01e8c01 3 weeks ago 393MB
ubuntu 14.04 7e4b16ae8b23 3 weeks ago 188MB
centos 7 1e1148e4cc2c 6 weeks ago 202MB
도커 이미지 삭제
도커의 이미지를 삭제하기 위해서는 docker rmi
를 사용하면 됩니다.
$ docker rmi commit_test:first
Untagged: commit_test:first
Deleted: sha256:750b35824fd85a8b7a47f2b0a7325cd74ff4490e8c125ca3abd157c7573bac36
Deleted: sha256:d5a73b4614eb1324ca1b0bb845453afab56f0955ce8e177b7ced58c7ee5e60d3
만약 이미지 삭제시 해당 이미지를 사용하고 있는 컨테이너가 있으면 아래와 같은 순서로 삭제하여야 합니다.
컨테이너 종료 -> 컨테이너 삭제 -> 이미지 삭제
이미지 추출
도커 이미지를 별도로 저장하거나 옮기는 등 이미지를 단일 바이너리 파일로 저장해야 할 때가 있습니다.
그때는 docker save
명령어를 사용합니다.
-o
: 추출할 파일명
$ docker save -o ubuntu_14_04.tar ubuntu:14.04
확인해보면 아래와 같이 이미지 파일이 생긴걸 확인할 수 있습니다.
$ ls -al ubuntu_14_04.tar
-rw------- 1 jungwoon staff 197235712 Jan 19 14:06 ubuntu_14_04.tar
이미지 로드
위에서 만들어진 바이너리 파일을 읽어서 docker 엔진
으로 가져오기 위해서는 docker load
명령어를 사용합니다.
-i
: 로드할 파일명
$ docker load -i ubuntu_14_04.tar
Loaded image: ubuntu:14.04
아래 명령어로 확인해보면 생긴걸 확인할 수 있습니다.
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
wordpress latest a1dc25194151 8 days ago 420MB
nginx latest 7042885a156a 3 weeks ago 109MB
mysql 5.7 ba7a93aae2a8 3 weeks ago 372MB
mongo latest 7177e01e8c01 3 weeks ago 393MB
ubuntu 14.04 7e4b16ae8b23 3 weeks ago 188MB
centos 7 1e1148e4cc2c 6 weeks ago 202MB
이미지 배포
만들어진 이미지를 배포하는 방법 중 도커 허브 이미지 저장소
를 사용하는 방법이 있습니다.
일단 https://hub.docker.com로 들어가서 로그인을 합니다.
그 다음 ‘Create a Repository’를 클릭합니다.
그럼 아래와 같이 이미지를 저장할 수 있는 Repository
를 만들 수 있습니다. 이름과 설명을 적당히 넣도록 합니다.
다 되었으면 스크롤을 내려서 Create
를 누릅니다.
다 되면 아래와 같은 화면을 볼 수 있습니다.
일단 배포를 위한 이미지(=commit_container)를 하나 만들도록 하겠습니다.
그 다음 my_image:0.0
이란 이름으로 commit을 하도록 하겠습니다.
그 다음은 tag
를 이용해서 앞
에 이미지가 저장되는 저장소 이름
으로 설정을 합니다.
$ docker tag [원래 이름] [저장소 이름]/[이미지 이름]:[버전]
여기서는 jungwoon/my_image:0.0
으로 이미지 이름을 변경했습니다.
그 다음 배포
를 하기전에 아래 명령어로 도커 허브
에 로그인을 합니다.
$ docker login
그 다음 아래 명령을 통해 배포를 합니다.
$ docker push [이미지 이름]
작업이 끝난 후에 도커 허브에 가보면 업로드 된걸 확인할 수 있습니다.