일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- CrossAxisAlignment
- InkWell
- Row
- Column Widget
- Flutter 강좌
- MainAxisAlignment
- ListTile
- sqlite
- Networking
- flutter
- node.js
- FutureBuilder
- Image.network
- HTTP
- Flutter Example
- 반석천
- navigator
- Flutter 앱 배포
- Hello World
- Snackbar
- Load Image
- Flutter Tutorial
- Cached Image
- Row Widget
- listview
- Scaffold
- WillPopScope
- ListView.builder
- AppBar
- Flutter 예제
- Today
- Total
꿈꾸는 시스템 디자이너
Docker 사용법 | 컨테이너와 이미지 상태 확인 및 삭제 방법 본문
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:~$
'Development > Cloud computing' 카테고리의 다른 글
[MongoDB] Ubuntu 18.04에 MongoDB 설치 방법 (2) | 2020.11.25 |
---|---|
Docker란? | Docker를 사용하는 이유 | Docker 장점 (0) | 2020.07.09 |
Docker 사용법 | 컨테이너에 포트 부여 방법 | 이미지 생성 방법 (0) | 2020.07.01 |
Docker 사용법 | 컨테이너 생성/종료/실행/진입 (1) | 2020.07.01 |
Ubuntu에 Docker 설치 방법 | How to install Docker on Ubuntu (0) | 2020.05.26 |