학습목표
- 이미지를 어느 장소에서 얻어오는지 이해한다.
- 도커허브에서 도커 이미지를 풀해서 가져온다.
- 도커허브로 도커 이미지를 푸쉬해서 밀어넣는다.
도커허브(Docker Hub)는 공개된 도커 이미지가 저장된 장소다. 다음과 같이 명령어를 입력해서 첫 이미지를 실행하면,
$ docker run --rm -p 8787:8787 rocker/verse
도커 소프트웨어가 이미지가 해당 컴퓨터에서 이용가능한지 검사한다. 해당 컴퓨터에 없기 때문에, 도커허브에서 이미지를 다운로드해서 가져온다. 도커허브에서 이미지를 가져오는 것은 어떻게 보면 자동으로 동작한다. 이미지만 도커허브에서 가져오기만 하고 실행하지 않는 경우, 다음과 같은 명령어를 실행시킨다.
$ docker pull rocker/verse
본인이 직접 도커 이미지를 생성했다고 가정하자. 도커 이미지를 전세계 사람들과 공유하고자 한다고 가정하면, https://hub.docker.com/에 계정을 만든 전세계 사람들과 공유하는 것도 이제는 가능하다. 전자우편으로 도커허브 사이트와 사용자간에 상호검증이 완료되면 이제 준비가 다 되었고, 도커 이미지를 도커허브에 올릴 준비는 끝났다.
$ docker login --username=yourhubusername --email=youremail@company.com
계정에 사용한 사용자명과 전자우편이 필요하다. 비밀번호를 재촉하면 비밀번호를 적어넣는다. 모든 것이 정상 동작되면, 다음과 유사한 메시지가 출력된다.
WARNING: login credentials saved in /home/username/.docker/config.json
Login Succeeded
$ docker images
그리고 나면, 다음과 유사한 출력결과가 화면에 뿌려지게 된다.
REPOSITORY TAG IMAGE ID CREATED SIZE
verse_gapminder_gsl latest 023ab91c6291 3 minutes ago 1.975 GB
verse_gapminder latest bb38976d03cf 13 minutes ago 1.955 GB
rocker/verse latest 0168d115f220 3 days ago 1.954 GB
이미지에 태그를 붙인다.
$ docker tag 6a131c8f7c2b yourhubusername/verse_gapminder:firsttry
태그 다음에 숫자는 이미지 ID(Image ID)와 매칭되어야 하고 :firsttry
가 이에 상응되는 태그다. 일반적으로, 태그에 명칭을 붙일 때 적절한 명칭을 부여하는 규칙은 해당 콘테이너가 무엇과 연계되어 사용되는지 혹은 무엇을 대표하는지 도움을 줄 수 있는 것으로 한다. 예를 들어, 콘테이너가 논문에 대한 분석을 담고 있다면 논문 DOI 혹은 해당 저널에서 발행한 일련 번호를 사용할 수 있다. 혹은 콘테이너가 특정 코드 혹은 데이터 저장소로 사용된다면 이를 활용하는 것도 좋은 선택지가 된다. 결국 해당 이미지가 어떤 목적으로 활용되는지 이해하는데 도움이 된다면 어떤 명칭이든 좋다.
$ docker push yourhubusername/hadleyverse_gapminder
이미지가 이제 누구나 사용할 수 있게 공개되었다.
도커허브(Docker Hub)에 푸쉬해서 이미지를 공유하는 것도 좋은 방법이지만 몇가지 단점도 있는 것이 사실이다.
이러한 문제에 대한 해법은 도커 콘테이너를 .tar
파일로 담아 로컬 파일로 떨어뜨려 놓고 필요할 때 이미지를 불러와서 사용하는 방법이다.
docker save
명령어를 사용해서 도커허브(Docker Hub)에서 가져온 이미지에 더하여 커밋하거나 빌드한 자체 제작 도커 이미지로 저장한다. 예를 들어 verse_gapminder
도커 이미지 로컬 사본으로 저장하려면 다음 명령어를 사용한다:
$ docker save verse_gapminder > verse_gapminder.tar
저장한 .tar
파일을 불러와서 사용하려면 docker load
명령어를 사용한다:
$ docker load --input verse_gapminder.tar
verse
이미지를 다운로드 받을 때와 속도를 비교해보면 어떤가?다음 수업: 도커파일(Dockerfiles)으로 진행하거나 학습목차로 되돌아 간다.