Docker

[Docker] 도커 이미지 명령어, Docker Hub 접속

ozofweird 2020. 11. 17. 15:56

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판)

728x90