Published on

Docker 명령어 모음

Authors

쓸 때마다 까먹어서 실무에서 자주 쓰는 명령어 위주로 한 번 정리해보았다.

레지스트리 로그인

레지스트리 주소를 넘겨주지 않으면 기본 레지스트리인 Docker Hub에 로그인된다.

docker login
# Authenticating with existing credentials...
# Login Succeeded

# Logging in with your password grants your terminal complete access to your account.
# For better security, log in with a limited-privilege personal access token. Learn more at https://docs.docker.com/go/access-tokens/

[-u | --username][-p | --password] 옵션을 주면 바로 로그인할 수 있다.

docker login -u coodingpenguin -p **** my-registry.com

레지스트리 주소를 인자로 넘겨주면 비공개 레지스트리에 로그인할 수 있다.

docker login my-registry.com

레지스트리 로그아웃

레지스트리 주소를 인자로 넘겨주면 해당 레지스트리에서 로그아웃된다. 넘겨주지 않는 경우 기본 레지스트리인 Docker Hub에서 로그아웃된다.

docker logout
# Removing login credentials for https://index.docker.io/v1/

이미지 검색

docker search ubuntu
# NAME                             DESCRIPTION                                      STARS     OFFICIAL   AUTOMATED
# ubuntu                           Ubuntu is a Debian-based Linux operating sys…   15952     [OK]
# websphere-liberty                WebSphere Liberty multi-architecture images …   294       [OK]
# open-liberty                     Open Liberty multi-architecture images based…   59        [OK]

[-f | --filter]를 사용해 검색 결과를 필터링할 수 있다. 현재 지원되는 필터링은 다음과 같다.

  • stars(int): 이미지의 스타 수
  • is-automated(boolean): 이미지 자동 빌드 여부
  • is-official(boolean): Docker Hub에서 인증한 공식 이미지 여부
docker search --filter stars=100 ubuntu
# NAME                DESCRIPTION                                      STARS     OFFICIAL   AUTOMATED
# ubuntu              Ubuntu is a Debian-based Linux operating sys…   15952     [OK]
# websphere-liberty   WebSphere Liberty multi-architecture images …   294       [OK]
# ubuntu-upstart      DEPRECATED, as is Upstart (find other proces…   114       [OK]

--no-trunc 옵션을 주면 잘린 DESCRIPTION을 확인할 수 있다.

# NAME                             DESCRIPTION                                                                                            STARS     OFFICIAL   AUTOMATED
# ubuntu                           Ubuntu is a Debian-based Linux operating system based on free software.                                15952     [OK]
# websphere-liberty                WebSphere Liberty multi-architecture images based on Ubuntu 18.04                                      294       [OK]
# open-liberty                     Open Liberty multi-architecture images based on Ubuntu 18.04                                           59        [OK]

이미지 다운로드

태그를 명시하지 않으면 기본적으로 latest 태그의 이미지를 가져온다.

docker pull ubuntu  # ubuntu:latest
# Using default tag: latest
# latest: Pulling from library/ubuntu
# 79d0ea7dc1a8: Pull complete
# Digest: sha256:dfd64a3b4296d8c9b62aa3309984f8620b98d87e47492599ee20739e8eb54fbf
# Status: Downloaded newer image for ubuntu:latest
# docker.io/library/ubuntu:latest

특정 태그의 이미지가 필요하면 꼭 명시해주자.

docker pull ubuntu:18.04
# 18.04: Pulling from library/ubuntu
# 13f679bb266a: Pull complete
# Digest: sha256:8aa9c2798215f99544d1ce7439ea9c3a6dfd82de607da1cec3a8a2fae005931b
# Status: Downloaded newer image for ubuntu:18.04
# docker.io/library/ubuntu:18.04

로컬 이미지 조회

docker images
# REPOSITORY                         TAG       IMAGE ID       CREATED             SIZE
# coodingpenguin/welcome-to-docker   v0.0.0    aaca33068baf   About an hour ago   237MB
# welcome-to-docker                  latest    aaca33068baf   About an hour ago   237MB
# ubuntu                             latest    3f5ef9003cef   2 weeks ago         69.2MB
# coodingpenguin/ubuntu              v0.0.0    3f5ef9003cef   2 weeks ago         69.2MB
# coodingpenguin/welcome-to-docker   latest    b1eb53af308a   3 weeks ago         13.6MB
# docker/welcome-to-docker           latest    b1eb53af308a   3 weeks ago         13.6MB
# ubuntu                             18.04     c1adc1968c7b   2 months ago        56.7MB

특정 레포지토리의 이미지도 조회 가능하며, 태그까지 일치하는 조회도 가능하다.

docker images ubuntu
# REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
# ubuntu       latest    3f5ef9003cef   2 weeks ago    69.2MB
# ubuntu       18.04     c1adc1968c7b   2 months ago   56.7MB

docker images ubuntu:latest
# REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
# ubuntu       latest    3f5ef9003cef   2 weeks ago   69.2MB

docker search에서 제공된 필터 옵션처럼 필터를 지원하고 있다. (자세한 내용은 여기를 참고!)
예를 들어, dangling=true를 주면 태그가 없는 임시 이미지를 조회할 수 있다.

이미지 삭제

이미지 이름 + 태그의 조합 혹은 이미지 ID로 특정 이미지를 삭제할 수 있다.

docker rmi ubuntu         # 태그가 없는 경우 latest 태그를 가진 이미지를 삭제
docker rmi ubuntu:20.04   # 태그가 있는 경우 해당 태그의 이미지를 삭제
docker rmi 3048ba078595   # 이미지 ID로도 삭제 가능

메모리만 차지 하는 댕글링 이미지를 한 번에 삭제하고 싶다면, docker prune을 사용하자.

댕글링 이미지(Dangling Image)가 무엇인가?

댕글링 이미지란 이름이 없는 이미지를 말하며, 빌드하는 과정에서 에러가 발생한 경우 부산물처럼 생성된다. 댕글링 이미지가 남아 있으면 공간을 차지하기 때문에 보통 주기적으로 삭제해준다.

docker image prune
# WARNING! This will remove all dangling images.
# Are you sure you want to continue? [y/N] y
# Total reclaimed space: 0B

더 나아가 컨테이너에서 사용하지 않는 이미지까지 삭제하고 싶다면 [-a | --all] 옵션을 추가한다.

docker image prune -a
# WARNING! This will remove all images without at least one container associated to them.
# Are you sure you want to continue? [y/N] y
# Total reclaimed space: 0B

이미지 빌드

이미지 업로드

우선 이미지를 업로드하기 전에 태깅을 해야 한다. (아니면 Permission Denied가 된다..)

docker tag ubuntu coodingpenguin/ubuntu:v0.0.0
# docker images
# REPOSITORY                         TAG       IMAGE ID       CREATED             SIZE
# coodingpenguin/ubuntu              v0.0.0    3f5ef9003cef   2 weeks ago         69.2MB
# ubuntu                             18.04     c1adc1968c7b   2 months ago        56.7MB

그 다음에 태깅된 이미지를 업로드해준다.

docker push coodingpenguin/ubuntu:v0.0.0
# The push refers to repository [docker.io/coodingpenguin/ubuntu]
# b49483f6a0e6: Mounted from library/ubuntu
# v0.0.0: digest: sha256:9b85f48f0298ec89dcbc46b35edf9b12e5b9b04ca9cc9ea063968933ddba6adf size: 529

컨테이너 실행

컨테이너 중단

실행 중인 컨테이너 접속

실행 중인 컨테이너 조회

참고 자료