Remove Container & Image

namkun·2022년 5월 2일
0

Docker & Kubernetes

목록 보기
7/16

Remove Container

다음과 같이 docker ps -a 명령어를 사용하면, 우리가 여태까지 실행했던 컨테이너들에 대한 목록을 확인할 수 있다.

$ docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS                      PORTS     NAMES
e67c4282072a   c586f6393f99   "python rng.py"          52 minutes ago   Exited (0) 16 minutes ago             zen_bartik
d0042323a522   a79f50098489   "docker-entrypoint.s…"   2 days ago       Exited (137) 2 days ago               peaceful_carver
c23e498750fc   a79f50098489   "docker-entrypoint.s…"   2 days ago       Exited (137) 2 days ago               mystifying_hermann
486508e74173   a79f50098489   "docker-entrypoint.s…"   2 days ago       Exited (137) 2 days ago               vigorous_moser
c630e1894dab   node           "docker-entrypoint.s…"   2 days ago       Exited (0) 2 days ago                 admiring_cori
fe8f001e47bd   c789396ae434   "docker-entrypoint.s…"   2 days ago       Exited (137) 2 days ago               sharp_keldysh
599ea766352d   9f9a1ee78f63   "docker-entrypoint.s…"   3 days ago       Exited (137) 3 days ago               modest_hoover
5af0ff574399   c411c7a9af12   "docker-entrypoint.s…"   3 days ago       Exited (137) 3 days ago               vigorous_cerf
82f269c5eefb   c411c7a9af12   "docker-entrypoint.s…"   5 days ago       Exited (137) 5 days ago               beautiful_wing
0df8884dbce3   c411c7a9af12   "docker-entrypoint.s…"   5 days ago       Exited (137) 5 days ago               reverent_meitner

이렇게 사용하지 않는 컨테이너에 대해서 삭제하는 명령어는 rm이다.

$ docker rm [container name]

당연하지만, 사용중인 컨테이너는 삭제할 수 없다^^;

여러 컨테이너를 한번에 지우려면 rm 명령어 뒤에 여러개의 컨테이너 이름을 공백으로 띄우고 쓰면 된다.

$ docker rm [container1] [container2]...

이런식으로 말이다.

$ docker rm reverent_meitner beautiful_wing vigorous_cerf modest_hoover sharp_keldysh admiring_cori vigorous_moser mystifying_hermann peaceful_carver 
reverent_meitner
beautiful_wing
vigorous_cerf
modest_hoover
sharp_keldysh
admiring_cori
vigorous_moser
mystifying_hermann
peaceful_carver

추가로 아예 실행할 때 해당 컨테이너가 종료되면 자동으로 삭제하도록 하는 옵션도 있다.

바로 run 명령어의 --rm 옵션인데, 해당 옵션을 주고 컨테이너를 실행하면 종료됨과 동시에 해당 컨테이너를 삭제한다.

한번 테스트 해보자.

# container 실행
$ docker run -p 3000:80 -d --rm a79f50098489
3fc83dd60e1781d98f8ba04eeb0a7a65a530a76dd152edbe99881038b0a456da

# 상태 확인
$ docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS        PORTS                  NAMES
3fc83dd60e17   a79f50098489   "docker-entrypoint.s…"   2 seconds ago   Up 1 second   0.0.0.0:3000->80/tcp   recursing_sammet

# container stop
$ docker stop recursing_sammet 
recursing_sammet

# container 삭제 확인
$ docker ps -a
CONTAINER ID   IMAGE          COMMAND           CREATED       STATUS                         PORTS     NAMES

제대로 작동한 것을 알 수 있다.

Remove Image

컨테이너와 동일하게 docker images로 빌드된 이미지 목록을 볼 수 있다.

$ docker images
REPOSITORY   TAG       IMAGE ID       CREATED             SIZE
<none>       <none>    c586f6393f99   About an hour ago   920MB
<none>       <none>    a79f50098489   2 days ago          1GB
<none>       <none>    c789396ae434   2 days ago          1GB
<none>       <none>    ce1c5f0e413c   2 days ago          1GB
<none>       <none>    c4025ea1f356   2 days ago          949MB
<none>       <none>    9f9a1ee78f63   3 days ago          1GB
<none>       <none>    c411c7a9af12   5 days ago          1GB
node         latest    738d733448be   11 days ago         995MB

사용하지 않는 이미지에 대해서 삭제를 하려면 rmi 명령어를 사용해주면 된다.

$ docker rmi [image id]

위의 컨테이너 명령과 동일하게 여러개를 동시에 지우려면 뒤에 이미지 id를 공백을 넣고 입력해주면 된다.

그러나 중요한 것은 이미지가 더 이상 컨테이너에서 사용되지 않을 때만 삭제할 수 있다는 것이다.

특정 이미지를 사용한 컨테이너가 종료된 상태일지라도 존재한다면, 그 이미지는 삭제 할 수 없다.

추가로, 현재 실행중인 컨테이너에서 사용되지 않는 모든 이미지를 제거하는 명령어는 prune이다.

주의해야하는 것은 명령어가 images가 아니라 image 이다.

$ docker image prune

이렇게 하면 한번에 사용하지 않는 이미지들에 대해서 제거할 수 있다.

$ docker image prune
WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N] y
Deleted Images:
deleted: sha256:9f9a1ee78f6323a1b209294bc3f24f99f81ce87da750fd235684a2184d8a0563
deleted: sha256:c789396ae43448483631516e9e886b47959cafde70905771d2c81ef1bfb3a9a3
deleted: sha256:a79f50098489326f784eef6b51f66fc66dea00bc40ab5fba34672685dedd2c13
deleted: sha256:c411c7a9af12a1f11afd09db36a3b53656a74fd4fe8d511a35d4f29fdb3dfaed

Total reclaimed space: 0B

이렇게 하면 해당되는 이미지 내부의 레이어들이 삭제되는 것을 확인할 수 있다.

profile
개발하는 중국학과 사람

0개의 댓글