root@ubuntu-20-04:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
root@ubuntu-20-04:~# docker container list
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
실행되고 있지 않은 컨테이너 목록까지 확인하고 싶을 땐
root@ubuntu-20-04:~# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS N
AMES
5bd10300d4eb ubuntu:18.04 "/bin/bash" 7 hours ago Exited (255) 2 minutes ago b
oring_antonelli
33f3a91888f0 ubuntu:18.04 "/bin/bash" 8 hours ago Exited (137) 7 hours ago e
cstatic_poincare
e01e3e8300db ubuntu:18.04 "/bin/bash" 8 hours ago Exited (255) 8 hours ago f
estive_mcclintock
root@ubuntu-20-04:~# docker container list -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS N
AMES
5bd10300d4eb ubuntu:18.04 "/bin/bash" 7 hours ago Exited (255) 3 minutes ago b
oring_antonelli
33f3a91888f0 ubuntu:18.04 "/bin/bash" 8 hours ago Exited (137) 7 hours ago e
cstatic_poincare
e01e3e8300db ubuntu:18.04 "/bin/bash" 8 hours ago Exited (255) 8 hours ago f
estive_mcclintock
root@ubuntu-20-04:~# docker run -it -d ubuntu:16.04
root@ubuntu-20-04:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e8f945561ec5 ubuntu:16.04 "/bin/bash" 8 seconds ago Up 7 seconds beautiful_dij
kstra
root@ubuntu-20-04:~# docker attach e8f945561ec5
root@e8f945561ec5:/# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 13:21 pts/0 00:00:00 /bin/bash
root 13 1 0 13:23 pts/0 00:00:00 ps -ef
동일한 도커 이미지의 다수의 컨테이너 실행
root@ubuntu-20-04:~# docker run -it -d ubuntu:16.04
59586656d8eea8fcf7187795dad43e69f11552b7d8ab1bef75ae27317882f492
root@ubuntu-20-04:~# docker run -it -d ubuntu:16.04
57c6eab209f83748e5b75974f86eaad99adb94ece8a888f610a06d531bef52ff
root@ubuntu-20-04:~# docker run -it -d ubuntu:16.04
7c4f4a7bf7a1f02db73088b97950a0c6464c1365f2b4aadc49459efe1251c85c
root@ubuntu-20-04:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7c4f4a7bf7a1 ubuntu:16.04 "/bin/bash" 2 seconds ago Up 1 second loving_napier
57c6eab209f8 ubuntu:16.04 "/bin/bash" 3 seconds ago Up 2 seconds infallible_sa
ha
59586656d8ee ubuntu:16.04 "/bin/bash" 4 seconds ago Up 3 seconds tender_maxwel
l
도커 이미지와 컨테이너는 일대다 관계다.
root@ubuntu-20-04:~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 16.04 b6f507652425 2 years ago 135MB
root@ubuntu-20-04:~# docker stop 7c4f4a7bf7a1
7c4f4a7bf7a1
root@ubuntu-20-04:~# docker stop 57c6eab209f8
57c6eab209f8
root@ubuntu-20-04:~# docker stop 59586656d8ee
59586656d8ee
docker ps -q
를 통해 도커 컨테이너 ID를 받을 수있다.
root@ubuntu-20-04:~# docker ps -q
16c9d27edb28
0199424abfaa
073139b09370
그러면 이렇게 응용할 수있다.
root@ubuntu-20-04:~# docker stop $(docker ps -q)
16c9d27edb28
0199424abfaa
073139b09370
root@ubuntu-20-04:~# docker rm $(docker ps -aq)
16c9d27edb28
0199424abfaa
073139b09370
7c4f4a7bf7a1
57c6eab209f8
59586656d8ee
e8f945561ec5
5bd10300d4eb
33f3a91888f0
e01e3e8300db
root@ubuntu-20-04:~# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
root@ubuntu-20-04:~# docker run -d -it ubuntu:16.04 /bin/bash
76d48137e3c130ac73010625c19463e123eabfd2da8e664d4f693a8a507261ac
root@ubuntu-20-04:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
76d48137e3c1 ubuntu:16.04 "/bin/bash" 2 seconds ago Up 1 second vigorous_hawki
ng
root@ubuntu-20-04:~# docker ps -q
76d48137e3c1
root@ubuntu-20-04:~# docker attach $(docker ps -q)
root@76d48137e3c1:/#
root@76d48137e3c1:/# cd home
root@76d48137e3c1:/home# ls
root@76d48137e3c1:/home# mkdir test
root@76d48137e3c1:/home# exit
exit
root@ubuntu-20-04:~# docker diff 76d48137e3c1
C /home
A /home/test
C /root
A /root/.bash_history
원본 이미지 기준으로 변경된 내용을 알려준다.
C: Changed
A: Added
D: Deleted
위에서 만든 test 디렉터리를 삭제한다고 D가 나올까?
아니다.
왜냐하면 D(Deleted)는 원본 이미지를 기준으로 변경 내역을 알려주기 때문이다.
test 디렉터리는 우리가 원본 이미지에 추가로 만든거다.
즉, 아래와 같이 원본 이미지에 존재했던 파일/디렉터리를 제거해야 하는 것이다.
root@ubuntu-20-04:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
98d51581e2fe ubuntu:16.04 "/bin/bash" 12 seconds ago Up 11 seconds boring_gaus
s
root@ubuntu-20-04:~# docker attach 98d51581e2fe
root@98d51581e2fe:/#
root@98d51581e2fe:/# ls
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr
root@98d51581e2fe:/# cd var
root@98d51581e2fe:/var# ls
backups cache lib local lock log mail opt run spool tmp
root@98d51581e2fe:/var# cd log
root@98d51581e2fe:/var/log# ls
alternatives.log apt bootstrap.log btmp dmesg dpkg.log faillog fsck lastlog wtmp
root@98d51581e2fe:/var/log# rm alternatives.log
root@98d51581e2fe:/var/log# ls
apt bootstrap.log btmp dmesg dpkg.log faillog fsck lastlog wtmp
root@98d51581e2fe:/var/log# exit
exit
root@ubuntu-20-04:~# ls
mem_eater.py snap
root@ubuntu-20-04:~# docker diff 98d51581e2fe
C /var
C /var/log
D /var/log/alternatives.log
C /root
A /root/.bash_history
마찬가지로 원본에 존재했던 /usr/games를 삭제해보자.
root@98d51581e2fe:/usr# rm -rf games/
root@98d51581e2fe:/usr# ls
bin include lib local sbin share src
root@98d51581e2fe:/usr# exit
exit
root@ubuntu-20-04:~# docker diff 98d51581e2fe
C /root
A /root/.bash_history
C /usr
D /usr/games
C /var
C /var/log
D /var/log/alternatives.log