[Docker / Kubernetes] 4. 도커 이미지

👉 이 게시글은 도커 / 쿠버네티스 온라인 부트캠프 with 카카오엔터프라이즈 강의를 바탕으로 작성되었습니다.

1. Docker Image & Dockerhub


특정한 컨테이너를 구성한다고 가정할 때, 우리는 해당 컨테이너를 구축하기 위한 도커 이미지를 선택해야 한다. 이 때, CD가 잔뜩 꽂혀있는 책장처럼, 수많은 이미지를 담고 있는 저장소가 있다. 바로 dockerhub이다.

dockerhub는 도커 엔진에서 기본적으로 참조하는 이미지 저장소이다. 로컬 영역에 이미지가 없다면, 도커는 자동으로 dockerhub를 참조하여 이미지를 가져온다.


dockerhub에 접속하면 위와 같이 공개된 수많은 이미지를 확인할 수 있다. dockerhub에서는 여러 사람들이 도커 이미지를 자유롭게 업로드할 수 있다. 그렇기 때문에 해킹을 목적으로 한 악성 코드를 심거나 컴퓨터 성능에 영향을 주는 이미지에 노출이 될 수도 있다. 이를 방지하기 위해 dockerhub는 공식 인증한 이미지에 Official Image 마크를 달아 유저의 안전한 이미지 사용을 보장한다.


2. Docker Image 관련 명령어

- docker image 가져오기

$ docker image pull <이미지명>
$ docker image pull <이미지명:태그>

도커 이미지를 dockerhub에서 받아올 때는 pull 명령어를 사용한다. 도커 이미지는 tag를 통해 버전별로 관리되는데, 이미지를 pull할 때 태그를 명시하지 않으면 자동으로 latest 태그에 해당하는 이미지를 받아온다.

- docker image 조회

$ docker image ls
$ docker images

도커 엔진에 존재하는 모든 이미지를 조회한다.

- docker image 개별 정보 조회

$ docker image inspect <이미지명:태그>

도커 이미지의 개별 정보를 json 형식으로 조회할 수 있다.

$ docker image inspect --format="{{ .<key value> }}" <이미지명:태그>

format 옵션에 조회하고자 하는 값의 key를 입력하면 해당 key에 해당하는 value를 얻을 수 있다. json의 hierarchy에 따라 key 앞에 .을 붙여 하위 계층에 접근할 수 있다.
ex) .RepoTags, .ContainerConfig.Hostname

- docker image 태그 설정

$ docker image tag <기존 이미지명> <사용자명>/<이미지명:태그>

기존의 도커 이미지를 유지한 채로 별칭을 붙여 동일한 이미지를 복제한다. 기존 이미지와 복제된 이미지의 id는 동일하다.

- docker image 삭제

$ docker image rm <이미지명:태그>

도커 이미지를 도커 엔진에서 삭제한다. 복제된 이미지를 삭제한 경우에는 untagged 메시지가 출력되며, 원본 이미지를 삭제한 경우에는 deleted 메시지가 출력된다.

- docker image 생성

$ docker container commit -a <사용자명> <컨테이너명> <생성할 이미지명>
$ docker container commit -m <메세지> <컨테이너명> <생성할 이미지명>

현재 구동중인 컨테이너의 상태를 그대로 본뜬 스냅샷을 이미지화한다. -a 또는 -m 옵션을 통해 사용자명 또는 메세지를 추가할 수 있다. 추가한 내용은 inspect 명령어를 통해 확인할 수 있다.

- docker image 내보내기

$ docker container export <이미지명> > <압축파일명>

도커 이미지를 압축 파일 형식으로 내보낸다.

- 압축 파일 기반 docker image 생성

$ docker image import <압축파일명> <이미지명:태그>

export 명령어를 통해 생성된 압축 파일을 기반으로 도커 이미지를 새로 생성한다.

좋은 웹페이지 즐겨찾기