A A
[Docker] Docker Installation Check (๋„์ปค ์„ค์น˜ ํ™•์ธ)
ํ•œ๋ฒˆ ์„ค์น˜ํ•œ Docker Engine์„ ํ†ตํ•ด ์ฒซ image๋ฅผ ๋‹ค์šด๋กœ๋“œ ํ•ด๋ณด๋ฉด์„œ ์ปจํ…Œ์ด๋„ˆ ์„œ๋น„์Šค๋ฅผ ํ•œ๋ฒˆ ๊ฐ€๋™์‹œ์ผœ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Docker Container Service

๋ฆฌ๋ˆ…์Šค ์ปจํ…Œ์ด๋„ˆ์˜ ๋ฏธ๋ž˜ ๋ผ๋Š” ์ œ๋ชฉ์œผ๋กœ ๋„์ปค ์—”์ง„์„ ์ฒ˜์Œ ๋ฐœํ‘œํ•œ ์†”๋กœ๋ชฌ ํ•˜์ต์Šค๋Š” docker ๋ผ๋Š” ์ƒˆ๋กœ์šด ๋ช…๋ น์œผ๋กœ ‘Hello World’ ๋ฌธ์ž์—ด์„ ์ถœ๋ ฅํ•˜๋Š” ๋ฐ๋ชจ๋ฅผ ํ•œ๋ฒˆ ์‹œ์—ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

# docker hub ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์—์„œ ์ œ๊ณตํ•˜๋Š” busy box image๋ฅผ ๋‹ค์šด๋กœ๋“œ ํ›„ ์กฐํšŒํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
toby@tobykakao:~$ docker pull busybox
Using default tag: latest
latest: Pulling from library/busybox
Digest: sha256:768e5c6f5cb6db0794eec98dc7a967f40631746c32232b78a3105fb946f3ab83
Status: Image is up to date for busybox:latest 
docker.io/library/busybox:latest

toby@tobykakao:~$ docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
busybox      latest    63cd0d5fb10d   13 days ago   4.04MB
# ๋‹ค์šด๋กœ๋“œํ•œ ์ด๋ฏธ์ง€๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋จ. ์ด๋ฏธ์ง€ ๋’ค์— ํƒœ๊ทธ๊ฐ€ latest์ด๋ฉด ์ƒ๋žต ๊ฐ€๋Šฅ
toby@tobykakao:~$ docker run busybox
toby@tobykakao:~$ docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED         STATUS                     PORTS     NAMES
1d28ecb555b4   busybox   "sh"      5 seconds ago   Exited (0) 4 seconds ago             serene_moser
toby@tobykakao:~$

docker ps -a ๋ช…๋ น์€ ๋ชจ๋“ (์‹คํ–‰์ค‘, ์ข…๋ฃŒ๋œ) ์ปจํ…Œ์ด๋„ˆ์˜ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋ฆฌ๋ˆ…์Šค ๋ช…๋ น์–ด์ธ ps(process status)์™€ ๊ฐ™์€ ๋งฅ๋žต์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ Docker Container๋Š” ‘ํ”„๋กœ์„ธ์Šค ๊ฐ€์ƒํ™”’๋ผ๋Š” ์˜๋ฏธ๋ฅผ ๋˜์ƒˆ๊น๋‹ˆ๋‹ค.

๋งŒ์•ฝ busybox๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ sh(์…ธ)์„ ์ด์šฉํ•˜์—ฌ ์ง€์ •ํ•œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋Š”๋ฐ, ์ฒ˜์Œ ์‹คํ–‰ํ•œ ๋ช…๋ น์–ด์—์„  busybox ๋’ค์— ๋ช…๋ น์„ ๊ธฐ์žฌํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹คํ–‰๋˜์ž๋งˆ์ž ๊ณง๋ฐ”๋กœ ์ข…๋ฃŒ๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

๊ทธ๋Ÿฌ๋ฉด? ์ปจํ…Œ์ด๋„ˆ์—๋„ ์šด์˜์ฒด์ œ๊ฐ€ ์žˆ๋Š”๊ฑธ๊นŒ์š”? ๋ช…๋ น์–ด sh(์…ธ)์„ ์ด์šฉํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์— ์ ‘์†ํ•˜๋ฉด? Ubuntu Linux์ธ๊ฑธ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•ž์„œ ๋ฐฐ์šด ๋‚ด์šฉ์ฒ˜๋Ÿผ Docker ๊ฐ€์ƒํ™”๋Š” Host์˜ ์ปค๋„์„ ๊ณต์œ ํ•˜์—ฌ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Ubuntu ๋ฆฌ๋ˆ…์Šค๊ฐ€ ์„ค์น˜๋œ busybox์˜ ์šฉ๋Ÿ‰์„ ๋ณด๋ฉด 1.22MB์ž…๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ์ž‘์€ ์šฉ๋Ÿ‰์œผ๋กœ OS๊ฐ€ ๊ฐ€๋™์ด ๋ ๊นŒ? ๋ผ๋Š” ์˜๋ฌธ์ด ๋“ค์ˆ˜๋„ ์žˆ์ง€๋งŒ, ์ƒ๊ฐํ•ด๋ณด๋ฉด Docker Container๋Š” HOST์˜ Kernel์€ Host์˜ Kernel์„ ๊ณต์œ ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ณ , ๊ฐ€๋™์— ํ•„์š”ํ•œ ๋„๊ตฌ๋งŒ ์ผ๋ถ€ ํƒ‘์žฌํ•œ ‘๊ฒฉ๋ฆฌ๋œ ๊ฒฝ๋Ÿ‰์˜ Linux Process’์ž…๋‹ˆ๋‹ค.

toby@tobykakao:~$ docker run -it busybox sh
/ # uname -a
Linux 12a314e0ce74 6.8.0-45-generic #45-Ubuntu SMP PREEMPT_DYNAMIC Fri Aug 30 12:26:41 UTC 2024 aarch64 GNU/Linux
/ # exit
# ์…ธ(sh)์— echo ๋ช…๋ น์„ ์ด์šฉํ•ด 'Hello World'์„ ์ถœ๋ ฅํ•ด๋ณธ๋‹ค.
toby@tobykakao:~$ docker run busybox echo 'Hello World'
Hello World

์ถœ๋ ฅ๋œ ‘Hello World’๋Š” ์–ด๋””์„œ ์ถœ๋ ฅ์ด ๋˜์—ˆ์„๊นŒ์š”? Container์—์„œ ์ถœ๋ ฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋‹จ์ˆœํžˆ ๋ฆฌ๋ˆ…์Šค ์šด์˜์ฒด์ œ์—์„œ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋Š” echo ๋ช…๋ น์ด์ง€๋งŒ, host๊ฐ€ ์•„๋‹Œ Container๋ผ๋Š” Service๋ฅผ ํ†ตํ•ด ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

Busybox ์‹คํ–‰ ๊ณผ์ •์€ ์•„๋ž˜์˜ ๊ทธ๋ฆผ์„ ์ฐธ๊ณ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

Busybox ์‹คํ–‰๊ณผ์ •


Docker ์ •๋ณด ํ™•์ธ

docker ๋ฒ„์ „์„ ํ™•์ธํ• ๋•Œ, ์–ด๋– ํ•œ ๋‚ด์šฉ์ด ์žˆ๋Š”์ง€ ํ•œ๋ฒˆ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
toby@tobykakao:~$ docker -v
Docker version 27.3.1, build ce12230

toby@tobykakao:~$ docker version
Client: Docker Engine - Community
 Version:           27.3.1
 API version:       1.47
 Go version:        go1.22.7
 Git commit:        ce12230
 Built:             Fri Sep 20 11:41:54 2024
 OS/Arch:           linux/arm64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          27.3.1
  API version:      1.47 (minimum version 1.24)
  Go version:       go1.22.7
  Git commit:       41ca978
  Built:            Fri Sep 20 11:41:54 2024
  OS/Arch:          linux/arm64
  Experimental:     false
 containerd:
  Version:          1.7.22
  GitCommit:        7f7fdf5fed64eb6a7caf99b3e12efcf9d60e311c
 runc:
  Version:          1.1.14
  GitCommit:        v1.1.14-0-g2c9f560
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

์„ค์น˜ํ•œ Docker Engine์€ Client, Server๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. Client๋Š” Docker ๋ช…๋ น์„ ๋ฐ›๊ณ , ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. Server๋Š” Docker Engine. ์ฆ‰, Docker Demon์„ ์ด์šฉํ•ด Container ์‹œ์ž‘, ์šด์˜, ์ •์ง€๋“ฑ์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

 

์•„๋ž˜๋Š” Docker Version ์ •๋ณด์— ๋‚˜ํƒ€๋‚˜๋Š” ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„์˜ ์ƒํ˜ธ ์‹คํ–‰ ์›๋ฆฌ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

Docker ์‹คํ–‰ ์›๋ฆฌ

1. Client๋Š” Docker ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ช…๋ น์ค„์„ ์ œ๊ณต

2. ์ˆ˜ํ–‰๋œ Docker ๋ช…๋ น์€ Server์˜ Docker Demon์œผ๋กœ ์ „๋‹ฌ

3. Docker Demon์€ docker.socket์ด ๋ณด์œ ํ•œ Docker API๋ฅผ ํ†ตํ•ด Container๋ฅผ ์ƒ์„ฑ

4. ์ˆ˜ํ–‰๋œ Container์— ํฌํ•จ๋œ ์„œ๋น„์Šค ๊ฒฐ๊ณผ๋ฅผ Client์— ์ „๋‹ฌ

 

System์— ์„ค์น˜๋œ Docker ๊ตฌ์„ฑ ์ •๋ณด๋Š” docker info๋ฅผ ํ†ตํ•ด ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ •๋ณด๋ฅผ ์ถœ๋ ฅํ•˜์—ฌ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

  • ์ปค๋„์ •๋ณด, ํ˜„์žฌ Container์ˆ˜ ๋ฐ image ์ˆ˜๋ฅผ ์ถœ๋ ฅ
  • ์‚ฌ์šฉ์ค‘์ธ Storage Driver์— ๋”ฐ๋ฅธ ํ’€ ์ด๋ฆ„
  • ๋ฐ์ดํ„ฐ ํŒŒ์ผ, ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ ํŒŒ์ผ, ์‚ฌ์šฉ๋œ ๋ฐ์ดํ„ฐ ๊ณต๊ฐ„, ์ด ๋ฐ์ดํ„ฐ ๊ณต๊ฐ„, ์‚ฌ์šฉ๋œ Meta Data ๊ณต๊ฐ„, ์ด ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ ๊ณต๊ฐ„ ์ •๋ณด๋ฅผ ํ‘œ์‹œ.

 

ํ•œ๋ฒˆ docker system info๋ฅผ ์‹คํ–‰ํ•ด์„œ ์ถœ๋ ฅ ์ •๋ณด๋ฅผ ํ•˜๋‚˜์”ฉ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

toby@tobykakao:~$ docker system info

Client: Docker Engine - Community
 Version:    27.3.1  # ํด๋ผ์ด์–ธํŠธ ์ธก Docker ์—”์ง„์˜ ๋ฒ„์ „.
 Context:    default  # Docker๊ฐ€ ์‚ฌ์šฉํ•  ๊ธฐ๋ณธ ์ปจํ…์ŠคํŠธ.
 Debug Mode: false  # ๋””๋ฒ„๊ทธ ๋ชจ๋“œ๊ฐ€ ๋น„ํ™œ์„ฑํ™”๋จ.
 Plugins:
  buildx: Docker Buildx (Docker Inc.)  # ๋‹ค์ค‘ ํ”Œ๋žซํผ ๋นŒ๋“œ๋ฅผ ์ง€์›ํ•˜๋Š” Buildx ํ”Œ๋Ÿฌ๊ทธ์ธ.
    Version:  v0.17.1  # Buildx ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ๋ฒ„์ „.
    Path:     /usr/libexec/docker/cli-plugins/docker-buildx  # Buildx ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ๊ฒฝ๋กœ.
  compose: Docker Compose (Docker Inc.)  # ๋‹ค์ค‘ ์ปจํ…Œ์ด๋„ˆ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ Docker Compose.
    Version:  v2.29.7  # Docker Compose์˜ ๋ฒ„์ „.
    Path:     /usr/libexec/docker/cli-plugins/docker-compose  # Docker Compose์˜ ๊ฒฝ๋กœ.

Server:
 Containers: 3  # ์ด 3๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์กด์žฌํ•จ.
  Running: 0  # ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ๋Š” ์—†์Œ.
  Paused: 0  # ํ˜„์žฌ ์ผ์‹œ ์ค‘์ง€๋œ ์ปจํ…Œ์ด๋„ˆ๋Š” ์—†์Œ.
  Stopped: 3  # ํ˜„์žฌ ์ค‘์ง€๋œ ์ปจํ…Œ์ด๋„ˆ 3๊ฐœ.
 Images: 1  # ํ˜„์žฌ ์‹œ์Šคํ…œ์— ์ €์žฅ๋œ Docker ์ด๋ฏธ์ง€ 1๊ฐœ.
 Server Version: 27.3.1  # ์„œ๋ฒ„ ์ธก Docker ์—”์ง„์˜ ๋ฒ„์ „.
 Storage Driver: overlay2  # ์ปจํ…Œ์ด๋„ˆ ํŒŒ์ผ ์‹œ์Šคํ…œ ๋ ˆ์ด์–ด๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์ €์žฅ์†Œ ๋“œ๋ผ์ด๋ฒ„.
  Backing Filesystem: extfs  
  Supports d_type: true  
  Using metacopy: false  
  Native Overlay Diff: true  
  userxattr: false  
 Logging Driver: json-file  # ๋กœ๊ทธ๋Š” JSON ํŒŒ์ผ ํ˜•์‹์œผ๋กœ ์ €์žฅ๋จ.
 Cgroup Driver: systemd  # ์‹œ์Šคํ…œ์˜ ์ž์› ์ œํ•œ์„ ๊ด€๋ฆฌํ•˜๋Š” cgroup ๋“œ๋ผ์ด๋ฒ„๋กœ systemd ์‚ฌ์šฉ.
 Cgroup Version: 2 
 Plugins:
  Volume: local  
  Network: bridge host ipvlan macvlan null overlay 
  Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog  
 Swarm: inactive  # Docker Swarm(ํด๋Ÿฌ์Šคํ„ฐ๋ง ๋ฐ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ๋„๊ตฌ)์ด ๋น„ํ™œ์„ฑํ™”๋จ.
 Runtimes: io.containerd.runc.v2 runc  #
 Default Runtime: runc  # ๊ธฐ๋ณธ ๋Ÿฐํƒ€์ž„์œผ๋กœ runc ์„ค์ •.
 Init Binary: docker-init 
 containerd version: 7f7fdf5fed64eb6a7caf99b3e12efcf9d60e311c 
 runc version: v1.1.14-0-g2c9f560  
 init version: de40ad0  
 Security Options: 
  apparmor  # AppArmor ๋ณด์•ˆ ๋ชจ๋“ˆ ์‚ฌ์šฉ ์ค‘. ๋ฆฌ๋ˆ…์Šค์˜ SELinux์™€ ๋™์ผํ•œ ๋ณด์•ˆ ๋ชจ๋“ˆ
  seccomp  
   Profile: builtin  
  cgroupns  
 Kernel Version: 6.8.0-45-generic  # ์‹œ์Šคํ…œ ์ปค๋„ ๋ฒ„์ „.
 Operating System: Ubuntu 24.04.1 LTS  # ์šด์˜์ฒด์ œ๋Š” Ubuntu 24.04.1 LTS.
 OSType: linux  
 Architecture: aarch64 
 CPUs: 6 
 Total Memory: 3.811GiB  # ์ด 3.811GiB์˜ ์‹œ์Šคํ…œ ๋ฉ”๋ชจ๋ฆฌ.
 Name: tobykakao  # ์‹œ์Šคํ…œ ์ด๋ฆ„(ํ˜ธ์ŠคํŠธ ์ด๋ฆ„).
 ID: 8b4e4be2-ee7a-4598-8ba6-38031caca91f  
 Docker Root Dir: /var/lib/docker  
 Debug Mode: false  
 Experimental: false  
 Insecure Registries:  
  127.0.0.0/8  
 Live Restore Enabled: false

 

๋‹ค์Œ์€ ๋„์ปค System์ด ์‚ฌ์šฉํ•˜๋Š” Disk ์‚ฌ์šฉ๋Ÿ‰์— ๋Œ€ํ•œ ํ˜„์žฌ ์ƒํƒœ๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฆฌ๋ˆ…์Šค ๋ช…๋ น์–ด์˜ df(disk free)๋ฅผ ๋„์ปค๊ฐ€ ๊ทธ๋ž˜๋„ ์ฐจ์šฉํ•ด์„œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

toby@tobykakao:~$ docker system df
TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
Images          1         1         4.042MB   0B (0%)
Containers      3         0         14B       14B (100%)
Local Volumes   0         0         0B        0B
Build Cache     0         0         0B        0B

๊ฐ ์—ด์— ๋‚˜ํƒ€๋‚œ ๋‚ด์šฉ์„ ๋ณด๋ฉด ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. image, container, local volume, ๋นŒ๋“œ ์บ์‹œ ์ •๋ณด๊ฐ€ ์žˆ๊ณ , ๊ฐ๊ฐ์˜ ํ˜„์žฌ ์ƒํ™ฉ์„ ๋ณผ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Docker๋ฅผ ์‚ฌ์šฉํ•˜๋‹ค ๋ณด๋ฉด ์ด๋ฏธ์ง€, ์ปจํ…Œ์ด๋„ˆ ๋“ฑ์„ ์ง€์†์ ์œผ๋กœ ์ƒ์„ฑ, ์‚ญ์ œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋•Œ, RECLAIMABLE ํ•ญ๋ชฉ์€ ์‚ฌ์šฉ ์ค‘ ์ด์ง€ ์•Š์€ image๋ฅผ ์‚ญ์ œํ•จ์œผ๋กœ์จ ํ™•๋ณดํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ, RECLAIMABLE ํ•ญ๋ชฉ์€ ์‚ฌ์šฉ์ค‘์ด์ง€ ์•Š์€ image๋ฅผ ์‚ญ์ œํ•จ์œผ๋กœ์จ ํ™•๋ณดํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋” ์„ธ๋ถ€์ ์ธ ์ •๋ณด๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด -v ์˜ต์…˜์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

toby@tobykakao:~$ docker system df -v
Images space usage:

REPOSITORY   TAG       IMAGE ID       CREATED       SIZE      SHARED SIZE   UNIQUE SIZE   CONTAINERS
busybox      latest    63cd0d5fb10d   13 days ago   4.04MB    0B            4.042MB       3

Containers space usage:

CONTAINER ID   IMAGE     COMMAND                LOCAL VOLUMES   SIZE      CREATED          STATUS                      NAMES
8ad81ee3e360   busybox   "echo 'Hello World'"   0               0B        10 minutes ago   Exited (0) 10 minutes ago   zealous_jones
12a314e0ce74   busybox   "sh"                   0               14B       14 minutes ago   Exited (0) 13 minutes ago   clever_archimedes
1d28ecb555b4   busybox   "sh"                   0               0B        23 minutes ago   Exited (0) 23 minutes ago   serene_moser

Local Volumes space usage:

VOLUME NAME   LINKS     SIZE

Build cache usage: 0B

CACHE ID   CACHE TYPE   SIZE      CREATED   LAST USED   USAGE     SHARED

ํšŒ์ˆ˜ ๊ฐ€๋Šฅํ•œ ๊ณต๊ฐ„ ํ™•๋ณด๋Š” docker system prune ๋ช…๋ น์„ ์ด์šฉํ•˜์—ฌ ์ œ๊ฑฐํ• ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  docker system event๋ผ๋Š” ๋ช…๋ น์–ด๋„ ์žˆ์Šต๋‹ˆ๋‹ค. Docker server์—์„œ ๋ฐœ์ƒํ•˜๋Š” Docker ๊ด€๋ จ ์ด๋ฒคํŠธ ์ •๋ณด (Container, image, ํ”Œ๋Ÿฌ๊ทธ์ธ, volume, demon ์˜์—ญ)์„ ํ‘œ์‹œํ•˜๋Š” ๋ช…๋ น์–ด์ž…๋‹ˆ๋‹ค.

  • ํ„ฐ๋ฏธ๋„ 1
# ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด Docker ๊ด€๋ จ ๋ช…๋ น์ด ์‹คํ–‰๋˜์ง€ ์•Š๋Š” ๋™์•ˆ์—๋Š” ์•„๋ฌด๊ฒƒ๋„ ์ถœ๋ ฅ ์•ˆ๋จ
toby@tobykakao:~$ docker system events
  • ํ„ฐ๋ฏธ๋„ 2
  • Docker๋ฅผ ์ด์šฉํ•ด Ngnix ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์กฐ์ž‘ํ•ด๋ณด๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค. ํ„ฐ๋ฏธ๋„ 1์—์„œ๋Š” Docker ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ• ๋•Œ ๋งˆ๋‹ค, ๋‚ด๋ถ€์ ์œผ๋กœ ํ™œ์„ฑํ™” ๋˜๋Š” ์ด๋ฒคํŠธ ๊ธฐ๋ก์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.
docker run -itd -p 80:80 --name=webapp nginx
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
14c9d9d19932: Pull complete 
c62fa0108604: Pull complete 
783efa720071: Pull complete 
e9346e20ffd2: Pull complete 
e0917afa5d8b: Pull complete 
e905ecdf6023: Pull complete 
66b98279bfb9: Pull complete 
Digest: sha256:d2eb56950b84efe34f966a2b92efb1a1a2ea53e7e93b94cdf45a27cf3cd47fc0
Status: Downloaded newer image for nginx:latest
2f2917a74b78feb4cd8162250f42351cdbdebfcc2d9285f8c1cb5fcb2cf38954
  • ํ„ฐ๋ฏธ๋„ 1: ๋„์ปค ๋ช…๋ น์ด ์‹คํ–‰๋˜๋ฉด ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ด๋ฒคํŠธ ๋กœ๊ทธ๊ฐ€ ๊ธฐ๋ก๋จ
toby@tobykakao:~$ docker system events
2024-10-11T07:04:36.991981146Z image pull nginx:latest (maintainer=NGINX Docker Maintainers <docker-maint@nginx.com>, name=nginx)
2024-10-11T07:04:37.215592094Z container create 2f2917a74b78feb4cd8162250f42351cdbdebfcc2d9285f8c1cb5fcb2cf38954 (image=nginx, maintainer=NGINX Docker Maintainers <docker-maint@nginx.com>, name=webapp)
2024-10-11T07:04:37.334751074Z network connect 2899065e32655f25d664236592aa0752049d10bbc6f7e686aa92ccef4ae00a3e (container=2f2917a74b78feb4cd8162250f42351cdbdebfcc2d9285f8c1cb5fcb2cf38954, name=bridge, type=bridge)
2024-10-11T07:04:37.607976409Z container start 2f2917a74b78feb4cd8162250f42351cdbdebfcc2d9285f8c1cb5fcb2cf38954 (image=nginx, maintainer=NGINX Docker Maintainers <docker-maint@nginx.com>, name=webapp)
  • ํ„ฐ๋ฏธ๋„ 2: ์‹คํ–‰ํ•œ Ngnix ์›น ์•ฑ์„ ์ •์ง€, ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ„ฐ๋ฏธ๋„ 1์—์„œ ์ •์ง€๋œ ์ปจํ…Œ์ด๋„ˆ ์ •๋ณด๊ฐ€ ๊ธฐ๋ก๋จ
toby@tobykakao:~$ docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                               NAMES
2f2917a74b78   nginx     "/docker-entrypoint.\u2026"   2 minutes ago   Up 2 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp   webapp
# ํ„ฐ๋ฏธ๋„ 2
toby@tobykakao:~$ docker stop webapp
webapp
# ํ„ฐ๋ฏธ๋„ 1
2024-10-11T07:07:55.678637320Z container kill 2f2917a74b78feb4cd8162250f42351cdbdebfcc2d9285f8c1cb5fcb2cf38954 (image=nginx, maintainer=NGINX Docker Maintainers <docker-maint@nginx.com>, name=webapp, signal=3)
2024-10-11T07:07:55.865689469Z network disconnect 2899065e32655f25d664236592aa0752049d10bbc6f7e686aa92ccef4ae00a3e (container=2f2917a74b78feb4cd8162250f42351cdbdebfcc2d9285f8c1cb5fcb2cf38954, name=bridge, type=bridge)
2024-10-11T07:07:55.881969583Z container stop 2f2917a74b78feb4cd8162250f42351cdbdebfcc2d9285f8c1cb5fcb2cf38954 (image=nginx, maintainer=NGINX Docker Maintainers <docker-maint@nginx.com>, name=webapp)
2024-10-11T07:07:55.891990577Z container die 2f2917a74b78feb4cd8162250f42351cdbdebfcc2d9285f8c1cb5fcb2cf38954 (execDuration=198, exitCode=0, image=nginx, maintainer=NGINX Docker Maintainers <docker-maint@nginx.com>, name=webapp)

 

๋งŽ์€ ์ •๋ณด๊ฐ€ ์ด๋ฒคํŠธ ๋กœ๊ทธ๋กœ ๊ธฐ๋ก๋˜๊ธฐ ๋•Œ๋ฌธ์— ์‹๋ณ„ํ•˜๊ธฐ ์‰ฝ์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋ฒคํŠธ ์˜ต์…˜ ํ•„ํ„ฐ (—filter)๋ฅผ ํ†ตํ•ด ์›ํ•˜๋Š” ์ •๋ณด์˜ ํ‚ค์›Œ๋“œ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ํ•ด๋‹น ์ •๋ณด๋ฉด ์ถ”์ถœํ•ด์„œ ๋ณผ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

docker event๋Š” ๋กค๋ง ๋กœ๊ทธ์ด๋ฉฐ, ํ•œ๋ฒˆ์— 1,000๊ฐœ์˜ ์ด๋ฒคํŠธ๋ฅผ ๋ณด์œ ํ•ฉ๋‹ˆ๋‹ค.

# -- filter ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹๋ณ„
toby@tobykakao:~$ docker system events --filter 'type=image'
toby@tobykakao:~$ docker system events --filter 'event=stop'
toby@tobykakao:~$ docker system events --filter 'container=webapp'
toby@tobykakao:~$ docker system events --filter 'container=webapp' --filter 'event=stop'
# ์ง€๋‚œ 24์‹œ๊ฐ„์˜ ๋กœ๊ทธ๋ฅผ ์ถœ๋ ฅ
toby@tobykakao:~$ docker system events --since 24h
# JSON ํ˜•์‹์œผ๋กœ ๋กœ๊ทธ ์ถœ๋ ฅ
toby@tobykakao:~$ docker system events --format '{{json .}}'

๋„์ปค์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋กœ๊ทธ์ค‘ ์ด๋ฒคํŠธ ๋กœ๊ทธ์— ๋Œ€ํ•˜์—ฌ ํ•œ๋ฒˆ ์•Œ์•„๋ดค์Šต๋‹ˆ๋‹ค. ๋„์ปค ์—”์ง„์ด ์•ˆ์ •์ ์œผ๋กœ ์„ค์น˜๋˜๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ตฌ์„ฑ๋˜๋Š” ์š”์†Œ๋Š” Docker Demon์ž…๋‹ˆ๋‹ค. ๋งŒ์•ฝ Docker Demon์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด Container Service์—๋„ ํฐ ์˜ํ–ฅ์„ ์ฃผ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

Docker Demon ๊ด€๋ จ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด๋ฉด Docker Demon log๋ฅผ ํ†ตํ•ด ์›์ธ ํŒŒ์•…์— ๋„์›€์„ ์–ป์„์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ Docker Demon Debugging์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. Docker Demon์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ผ์„ ๋กœ๊ทธ๋ฅผ ํ†ตํ•ด ์ •ํ™•ํ•˜๊ฒŒ ํŒŒ์•…ํ• ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ Docker Demon์˜ ์žฅ์•  ๋ฐœ์ƒ์‹œ ๋ฌธ์ œ์˜ ์›์ธ์„ ํŒŒ์•…ํ•˜๋Š”๋ฐ ์ข‹์€ ์ˆ˜๋‹จ์ด ๋ฉ๋‹ˆ๋‹ค.

์›๊ฒฉ, ๋กœ์ปฌ Docker Clientt์—์„œ ๋“ค์–ด์˜ค๊ณ  ๋‚˜๊ฐ€๋Š” ๋ชจ๋“  ๋ช…๋ น(CLI)๋ฅผ log๋กœ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

  • ์ดํ‘œ๋Š” Host OS๋ณ„ Docker Demon log์™€ ํ™•์ธ ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
Host OS ์œ„์น˜ & ํ™•์ธ๋ฐฉ๋ฒ•
Ubuntu 16.04 ์ด์ƒ, CentOS /var/lib/docker, journalctl -u docker.service ๋ช…๋ น์–ด ์‚ฌ์šฉ
RedHat, Oracle Linux /var/log/messages
Debian ๊ณ„์—ด /var/log/daemon.log
Window ~AppData/Local
macOS ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd(or arm)64-linux/console-ring

 

  • Ubuntu ๋””๋ฒ„๊น… ๋กœ๊ทธ๋ฅผ ํ•œ๋ฒˆ ์ถœ๋ ฅํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. journalctl์€ ์•ž์„œ ์„ค๋ช…ํ•œ systemd ์˜์—ญ์˜ ๋ช…๋ น์–ด ์ž…๋‹ˆ๋‹ค.
# log ๋‚ด์šฉ์ค‘ msg ํ‚ค์›Œ๋“œ ์ •๋ณด๊ฐ€ ์ƒ์„ธ log ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.
# ์ด๋ฐฉ๋ฒ•์€ systemctl ๋˜๋Š” service ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด Docker Service๊ฐ€ ์‹œ์ž‘๋œ ๊ฒฝ์šฐ Debugging ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
toby@tobykakao:~$ sudo journalctl -u docker
[sudo] password for toby: 
Oct 10 11:57:03 tobykakao systemd[1]: Starting docker.service - Docker Applicat>
Oct 10 11:57:03 tobykakao dockerd[4286]: time="2024-10-10T11:57:03.628062918Z" >
Oct 10 11:57:03 tobykakao dockerd[4286]: time="2024-10-10T11:57:03.629556980Z" >
Oct 10 11:57:03 tobykakao dockerd[4286]: time="2024-10-10T11:57:03.875554170Z" >
Oct 10 11:57:04 tobykakao dockerd[4286]: time="2024-10-10T11:57:04.207428397Z" >
Oct 10 11:57:04 tobykakao dockerd[4286]: time="2024-10-10T11:57:04.225801580Z" >
Oct 10 11:57:04 tobykakao dockerd[4286]: time="2024-10-10T11:57:04.225828458Z" >
Oct 10 11:57:04 tobykakao dockerd[4286]: time="2024-10-10T11:57:04.225843710Z" >
Oct 10 11:57:04 tobykakao dockerd[4286]: time="2024-10-10T11:57:04.225986520Z" >
Oct 10 11:57:04 tobykakao dockerd[4286]: time="2024-10-10T11:57:04.267248370Z" >
Oct 10 11:57:04 tobykakao systemd[1]: Started docker.service - Docker Applicati>
Oct 10 12:00:07 tobykakao systemd[1]: Stopping docker.service - Docker Applicat>
Oct 10 12:00:07 tobykakao dockerd[4286]: time="2024-10-10T12:00:07.551298003Z" >
Oct 10 12:00:07 tobykakao dockerd[4286]: time="2024-10-10T12:00:07.557647874Z" >
Oct 10 12:00:07 tobykakao dockerd[4286]: time="2024-10-10T12:00:07.559497769Z" >
Oct 10 12:00:07 tobykakao systemd[1]: docker.service: Deactivated successfully.
Oct 10 12:00:07 tobykakao systemd[1]: Stopped docker.service - Docker Applicati>
Oct 10 12:27:42 tobykakao systemd[1]: Starting docker.service - Docker Applicat>
Oct 10 12:27:42 tobykakao dockerd[8680]: time="2024-10-10T12:27:42.767715300Z" >
Oct 10 12:27:42 tobykakao dockerd[8680]: time="2024-10-10T12:27:42.770782657Z" >
Oct 10 12:27:42 tobykakao dockerd[8680]: time="2024-10-10T12:27:42.847439422Z" >
Oct 10 12:27:43 tobykakao dockerd[8680]: time="2024-10-10T12:27:43.114300959Z" >
Oct 10 12:27:43 tobykakao dockerd[8680]: time="2024-10-10T12:27:43.209325985Z" >
lines 1-23

 

์œ„์™€ ์œ ์‚ฌํ•œ ๋ฐฉ๋ฒ•์€ dockerd ๋ช…๋ น์–ด ์ž…๋‹ˆ๋‹ค.

# ํ„ฐ๋ฏธ๋„ 1
# ํ„ฐ๋ฏธ๋„ 2์—์„œ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ช…๋ น์–ด๊ฐ€ ๊ณ ์Šค๋ž€ํžˆ dockerd ํ™”๋ฉด์— ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.
toby@tobykakao:~$ sudo dockerd -D
INFO[2024-10-11T07:17:49.780006024Z] Starting up                                  
DEBU[2024-10-11T07:17:49.780721588Z] Listener created for HTTP on unix (/var/run/docker.sock) 
INFO[2024-10-11T07:17:49.781812941Z] detected 127.0.0.53 nameserver, assuming systemd-resolved, so using resolv.conf: /run/systemd/resolve/resolv.conf 
DEBU[2024-10-11T07:17:49.795956847Z] Golang's threads limit set to 27180          
DEBU[2024-10-11T07:17:49.797654520Z] metrics API listening on /var/run/docker/metrics.sock 
DEBU[2024-10-11T07:17:49.807060603Z] Using default logging driver json-file       
DEBU[2024-10-11T07:17:49.807178724Z] No quota support for local volumes in /var/lib/docker/volumes: Filesystem does not support, or has not enabled quotas 
DEBU[2024-10-11T07:17:49.807246579Z] processing event stream                       module=libcontainerd namespace=plugins.moby
DEBU[2024-10-11T07:17:49.827950522Z] [graphdriver] priority list: [overlay2 fuse-overlayfs btrfs zfs vfs] 
DEBU[2024-10-11T07:17:49.845581888Z] successfully detected metacopy status         storage-driver=overlay2 usingMetacopy=false
DEBU[2024-10-11T07:17:49.851016353Z] backingFs=extfs, projectQuotaSupported=false, usingMetacopy=false, indexOff="index=off,", userxattr=""  storage-driver=overlay2
INFO[2024-10-11T07:17:49.851085375Z] [graphdriver] using prior storage driver: overlay2 
DEBU[2024-10-11T07:17:49.851105549Z] Initialized graph driver overlay2            
DEBU[2024-10-11T07:17:49.852902963Z] Max Concurrent Downloads: 3                  
DEBU[2024-10-11T07:17:49.852922386Z] Max Concurrent Uploads: 5                    
DEBU[2024-10-11T07:17:49.852926846Z] Max Download Attempts: 5                     
INFO[2024-10-11T07:17:49.852957856Z] Loading containers: start.                   
DEBU[2024-10-11T07:17:49.853733023Z] processing event stream                       module=libcontainerd namespace=moby
DEBU[2024-10-11T07:17:49.854008862Z] loaded container                              container=8ad81ee3e360735b0e853a62af1cdec639bc0c4d795eff15ed9548aaebeefaac paused=false running=false
DEBU[2024-10-11T07:17:49.854045999Z] loaded container                              container=2f2917a74b78feb4cd8162250f42351cdbdebfcc2d9285f8c1cb5fcb2cf38954 paused=false running=false
DEBU[2024-10-11T07:17:49.854187295Z] loaded container                              container=1d28ecb555b4357e2095cd2cc23e96f0d31049b98bb9ad440346655e63b9da55 paused=false running=false
DEBU[2024-10-11T07:17:49.854245189Z] loaded container                              container=12a314e0ce74cac9bb4c81b2ad60a906ef2133929223e86fad42d19635af08cc paused=false running=false
DEBU[2024-10-11T07:17:49.876904888Z] restoring container                           container=2f2917a74b78feb4cd8162250f42351cdbdebfcc2d9285f8c1cb5fcb2cf38954 paused=false restarting=false running=false
DEBU[2024-10-11T07:17:49.877102327Z] restoring container                           container=8ad81ee3e360735b0e853a62af1cdec639bc0c4d795eff15ed9548aaebeefaac paused=false restarting=false running=false
DEBU[2024-10-11T07:17:49.876930980Z] restoring container                           container=12a314e0ce74cac9bb4c81b2ad60a906ef2133929223e86fad42d19635af08cc paused=false restarting=false running=false
DEBU[2024-10-11T07:17:49.879589840Z] done restoring container                      container=8ad81ee3e360735b0e853a62af1cdec639bc0c4d795eff15ed9548aaebeefaac paused=false restarting=false running=false
DEBU[2024-10-11T07:17:49.879716547Z] done restoring container                      container=2f2917a74b78feb4cd8162250f42351cdbdebfcc2d9285f8c1cb5fcb2cf38954 paused=false restarting=false running=false
DEBU[2024-10-11T07:17:49.879762896Z] done restoring container                      container=12a314e0ce74cac9bb4c81b2ad60a906ef2133929223e86fad42d19635af08cc paused=false restarting=false running=false
DEBU[2024-10-11T07:17:49.881549890Z] restoring container                           container=1d28ecb555b4357e2095cd2cc23e96f0d31049b98bb9ad440346655e63b9da55 paused=false restarting=false running=false
DEBU[2024-10-11T07:17:49.882255035Z] done restoring container                      container=1d28ecb555b4357e2095cd2cc23e96f0d31049b98bb9ad440346655e63b9da55 paused=false restarting=false running=false
DEBU[2024-10-11T07:17:49.882408709Z] Option DefaultDriver: bridge                 
DEBU[2024-10-11T07:17:49.882414503Z] Option DefaultNetwork: bridge                
DEBU[2024-10-11T07:17:49.882417879Z] Network Control Plane MTU: 1500
# ํ„ฐ๋ฏธ๋„ 2
# dockerd ๋ช…๋ น์–ด๋„ docker demon์„ ์‹œ์ž‘ํ• ์ˆ˜ ์žˆ๊ณ , ๋‹ค๋ฅธ ์ž‘์—… ์ฐฝ์—์„œ ์ˆ˜ํ–‰๋˜๋Š” docker ๋ช…๋ น์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ debuggingํ•˜์—ฌ ํ™”๋ฉด์•  ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
toby@tobykakao:~$ docker ps -a
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS                      PORTS     NAMES
2f2917a74b78   nginx     "/docker-entrypoint.\u2026"   50 minutes ago   Exited (0) 47 minutes ago             webapp
8ad81ee3e360   busybox   "echo 'Hello World'"     19 hours ago     Exited (0) 19 hours ago               zealous_jones
12a314e0ce74   busybox   "sh"                     19 hours ago     Exited (0) 19 hours ago               clever_archimedes
1d28ecb555b4   busybox   "sh"                     19 hours ago     Exited (0) 19 hours ago               serene_moser

# ์ •์ง€๋˜์–ด ์žˆ๋Š” container ์‹œ์ž‘
toby@tobykakao:~$ docker start webapp
webapp

Docker Demon log๋ฅผ Docker ์ž์ฒด์ ์œผ๋กœ logging, debugging ํ•˜๋Š”๋ฒ•์„ ์„ค๋ช…๋“œ๋ ธ์Šต๋‹ˆ๋‹ค.

 

๋ฌผ๋ก  Linux System์—๋„ ๊ธฐ๋ณธ์ ์ธ log ์ˆ˜์ง‘ demon์ด ์žˆ์Šต๋‹ˆ๋‹ค. syslogd or rsyslogd Demon ์ž…๋‹ˆ๋‹ค. Docker log๋ฅผ Host OS์— log ์ˆ˜์ง‘ Demon์— ์—ฐ๊ฒฐํ•ด์„œ log๋ฅผ ๊ธฐ๋กํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์€ docker์˜ ๊ณต์‹๋ฌธ์„œ์— ๋‚˜์™€์žˆ์œผ๋‹ˆ๊ฐ€ ํ•œ๋ฒˆ ํ™•์ธํ•ด ๋ณด์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค.

 

๋‹ค์Œ๊ธ€์—”, ๋ณธ๊ฒฉ์ ์œผ๋กœ Docker๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ image, Container, Network, Volume๋“ฑ Docker์˜ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์— ๋ฐํ•˜์—ฌ ์„ค๋ช…ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.