[Docker] 도커 이미지 명령어, Docker Hub 접속
1 도커 이미지 명령어
1) Docker Hub
Docker Hub(hub.docker.com/)에는 깃허브나 Bitbucket과 같은 소스코드 관리 툴과 연계하여 코드를 빌드하는 기능이나 실행 가능한 애플리케이션의 이미지를 관리하는 기능을 갖춘 서비스이다. 공식 도커 이미지(Official) 외에도 사용자가 독자적인 도커 이미지를 공개할 수 있다.
2) 도커 이미지 다운로드
sudo docker image pull [옵션] [이미지명:태그명]
// CentOS 버전 7 취득
sudo docker image pull centos:7
// CentOS 모든 버전 취득
sudo docker image pull -a centos
// Tensorflow의 도커 이미지 취득
sudo docker imate pull gcr.io.tensorflow/tensorflow
3) 이미지 목록
sudo docker image ls [옵션] [리퍼지토리명]
옵션 | 셜명 |
-all, -a | 모든 이미지 표시 |
--digests | 다이제스트(이미지 고유 식별) 출력 여부 |
--no-trunc | 결과 모두 출력 |
--quiet, -q | 도커 이미지 ID만 출력 |
4) 이미지 위장 변조 방지
도커에서는 인프라 구성이 포함되기 때문에 악의적으로 위장이나 변조를 하지 못하도록 이미지를 보호해야한다. 이 경우 Docker Content Trust(DCT) 기능을 이용하면 정당성을 확인할 수 있다.
이미지 작성자가 도커 레지스티리에 이미지를 업로드하기 전에 로컬 환경에서 이미지 작성자의 비밀키(Offline Key)를 사용하여 이미지에 서명한다. 보안상 매우 중요한 키이기에 엄중한 관리하 필요하다. 서명이 된 이미지를 다운로드 할 때 이미지 작성자의 공개키(Tagging Key)를 사용하여 이미지가 진짜 유무를 확인한다. 변조된 경우 이미지를 무효화한다.
즉, DCT 기능을 활성화하고 이미지를 다운받을 때 Tagging Key를 출력하면서 서명 검증을 한다.
// DCT 기능 활성화
sudo export DOCKER_CONTENT_TRUST=1
5) 이미지 상세 정보 확인
이미지 상세 정보 확인 명령어를 사용할 경우 이미지 ID, 작성일, 도커 버전, CPU 아키텍처 정보를 확인할 수 있다. 결과는 JSON 형식으로 출력한다.
// CentOS 버전 7 상세 정보 확인
sudo docker image inspect centos:7
특정 정보만을 확인하기 위해서는 --format 옵션을 이용하여 확인할 수 있다.
// JSON 형태의 정보에서 OS 값 출력
sudo docker image inspect --format="{{ .Os}}" centos:7
// JSON 형태의 정보에서 ContainerConfig의 이미지 값 출력
sudo docker image inspect --format="{{ .ContainerConfig.Image }}" centos:7
6) 이미지 태그 설정
이미지에 표식이 되는 태그는 식별하기 쉬운 버전명을 붙이는 것이 일반적이다. Docker Hub에서는 작성한 이미지를 등록하려면 사용자명을 붙여 표현한다.
<Docker Hub [사용자명]>/[이미지명:태그명]
NginX의 이미지에 사용자명이 test, 컨테이너명이 webserver일 경우 태그에 1.0 버전 정보를 붙일 때는 tag 명령어를 사용한다. 그 후 이미지 목록을 확인하면 새로 태그를 붙인 이미지와 원래의 이미지 목록이 출력이된다. 이 두개의 항목은 동일한 이미지이며 이미지 자체를 복사하거나 이름이 바꾼것이 아닌 별칭을 붙인 것이다.
sudo docker image tag nginx test/webserver:1.0
7) 이미지 검색
Docker Hub에서 공개되어 있는 이미지를 검색할 경우에 search 명령어를 사용한다.
sudo docker search [옵션] [검색 키워드]
sudo docker search nginx
옵션 | 셜명 |
--no-trunc | 결과 모두 출력 |
--limit | n건의 검색 결과 표시 |
--filter=starts=n | 즐겨찾기의 수를 지정하여 출력 |
이미지 검색 결과로는 이미지명, 이미지 설명, 즐겨찾기 수, 공식 이미지 여부, Dockerfile을 바탕으로 자동 생성된 이미지 여부를 출력한다. 즐겨찾기 수가 많을 수록 사용자가 많이 사용하는 이미지임을 확인할 수 있다. 안전한 이미지는 공식 이미지이거나 Dockerfile로 공개된 이미지를 선택하는 것을 권장한다.
8) 이미지 삭제
이미지명은 레퍼지토리나 이미지 ID로 지정하여 삭제한다.
sudo docker image rm [옵션] [이미지명] [이미지명]
옵션 | 셜명 |
-force, -f | 강제 삭제 |
--no-prune | 중간 이미지 삭제하지 않음 |
사용하지 않는 이미지의 경우 디스크 용량을 고려하여 정기적으로 삭제해준다.
sudo docker image prune [옵션]
옵션 | 셜명 |
--all, -a | 사용하지 않는 이미지 모두 삭제 |
-force, -f | 강제 삭제 |
2. Docker Hub 접속
1) Docker Hub 로그인
도커 리퍼지토리에 업로드를 위해서 docker login 명령어를 이용하여 로그인한다.
sudo docker login [옵션] [서버]
옵션 | 셜명 |
--password, -p | 비밀번호 |
--username, -u | 사용자명 |
2) 이미지 업로드
이미지 업로드 명령어를 적용할 경우에는 '<Docker Hub 사용자명>/이미지명:태그명' 형태로 지정된다.
sudo docker image push [이미지명:태그명]
3) Docker Hub 로그아웃
sudo docker logout [서버명]
[참고] 완벽한 IT 인프라 구축을 위한 Docker (2판)