꿈꾸는 시스템 디자이너

Docker 사용법 | 컨테이너와 이미지 상태 확인 및 삭제 방법 본문

Development/Cloud computing

Docker 사용법 | 컨테이너와 이미지 상태 확인 및 삭제 방법

독행소년 2020. 7. 2. 16:00

1. 컨테이너 상태 확인

실행 중인 컨테이너의 상태를 확인할 때에는 ps 명령어를 사용한다.

ubuntu@here4you:~$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                  NAMES
a1b40c67d52d        study               "/bin/bash"         24 hours ago        Up 24 hours         0.0.0.0:6900->80/tcp   study2
ubuntu@here4you:~$

현재 study2라는 컨테이너가 24시간 이상 실행 중이며, 호스트의 6900으로 수신된 요청을 80번 포트로 수신하고 있다.

그리고 study2 컨테이너는 study 이미지를 기반으로 생성된 것임을 알 수 있다.

 

호스트에 존재하는 모든 컨테이너를 확인할 때에는 ps 명령어와 함께 -a 옵션을 사용한다.

ubuntu@here4you:~$ sudo docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                    PORTS                  NAMES
a1b40c67d52d        study               "/bin/bash"         24 hours ago        Up 24 hours               0.0.0.0:6900->80/tcp   study2
c628d61e15e8        ubuntu:18.04        "/bin/bash"         24 hours ago        Exited (0) 24 hours ago                          myserver
a6c38cd53d5f        ubuntu:18.04        "/bin/bash"         25 hours ago        Exited (0) 24 hours ago                          study
ubuntu@here4you:~$

myserver와 study 컨테이너가 24시간 전에 종료된 상태임을 알 수 있다. IMAGE 항목을 보면 둘 다 ubuntu18.04 이미지를 이용해서 생성된 것임을 알 수 있다.

 

2. 컨테이너 삭제

컨테이너를 삭제할 때에는 rm 명령어를 사용한다. study 컨테이너를 삭제한 후 컨테이너 정보를 다시 조회해 보자.

ubuntu@here4you:~$ sudo docker rm study
study
ubuntu@here4you:~$ sudo docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                    PORTS                  NAMES
a1b40c67d52d        study               "/bin/bash"         24 hours ago        Up 24 hours               0.0.0.0:6900->80/tcp   study2
c628d61e15e8        ubuntu:18.04        "/bin/bash"         24 hours ago        Exited (0) 24 hours ago                          myserver
ubuntu@here4you:~$

study 컨테이너가 삭제된 것을 확인할 수 있다.

 

이번에는 실행 중인 study2 컨테이너를 삭제 시도해 보자.

ubuntu@here4you:~$ sudo docker rm study2
Error response from daemon: You cannot remove a running container a1b40c67d52d8cb246b6789bfd1e7931b1ff41c091c10f32e1f36173a898c95d. Stop the container before attempting removal or force remove
ubuntu@here4you:~$

실행 중인 컨테이너는 삭제할 수 없다는 문구가 출력된다.

 

3. 이미지 상태 확인

로컬에 저장된 이미지의 정보를 확인할 때에는 images 명령어를 이용한다.

ubuntu@here4you:~$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
study               latest              6db604829661        24 hours ago        94.2MB
ubuntu              18.04               8e4ce0a6ce69        2 weeks ago         64.2MB
ubuntu@here4you:~$

현재 ubuntu 이미지와 지난 포스팅에서 생성한 study 이미지가 존재하는 것을 확인할 수 있다.

 

4. 이미지 삭제

이미지를 삭제할 때에는 rmi 명령어를 사용한다. ubuntu 이미지를 삭제해 보자. 이미지 이름이 아닌 이미지의 ID를 이용해서 삭제 가능하다.

ubuntu@here4you:~$ sudo docker rmi ubuntu:18.04
Error response from daemon: conflict: unable to remove repository reference "ubuntu:18.04" (must force) - container c628d61e15e8 is using its referenced image 8e4ce0a6ce69
ubuntu@here4you:~$

myserver(c628d61e15e8) 컨테이너가 ubuntu 이미지를 참조하고 있기 때문에 삭제가 불가능하다는 문구가 출력된다.

 

실제로 지난 포스팅에서 myserver 컨테이너를 ubuntu 이미지를 이용해서 생성했다. 그런데 왜 myserver 컨테이너 때문에 ubuntu 이미지를 삭제할 수 없을까?

이는 myserver 컨테이너를 커밋할 때 ubuntu 이미지를 참조하기 때문이다.

Docker는 컨테이너를 이미지로 커밋할 때 해당 컨테이너의 전체를 별도의 이미지로 생성하지 않는다. 해당 컨테이너를 생성할 때 사용한 이미지를 그대로 참조하면서 변경사항만을 추가해서 이미지를 생성한다.

현재 로컬에 저장된 study 이미지는 study 컨테이너를 커밋해서 생성했는데, 이 study 이미지는 ubuntu 이미지를 이용해서 생성한 것이다.

 

ubuntu 이미지 --생성--> study 컨테이너 --커밋--> study 이미지

 

다시 돌아와서 myserver 컨테이너가 커밋을 통해 이미지를 생성할 경우 ubuntu 이미지를 참조해야 하기 때문에 ubuntu 이미지를 삭제할 수 없는 것이다.

 

일반적으로 이미지를 삭제하려면, 해당 이미지를 참조하는 컨테이너를 먼저 삭제한 후 이미지를 삭제하는 것이 옳은 방법이다.

 

-f 옵션을 이용하면 이미지를 강제로 종료할 수 있다.

ubuntu@here4you:~$ sudo docker rmi -f ubuntu:18.04
Untagged: ubuntu:18.04
Untagged: ubuntu@sha256:86510528ab9cd7b64209cbbe6946e094a6d10c6db21def64a93ebdd20011de1d
ubuntu@here4you:~$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
study               latest              6db604829661        25 hours ago        94.2MB
ubuntu@here4you:~$

 

 

 

 

 

 

Comments