도커 명령어 복습

hyuckhoon.ko·2024년 3월 11일
0

컨테이너 리스트

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

🌟 diff를 통해 컨테이너 내부 달라진 점 확인하기

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

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

0개의 댓글