ํ๋ฒ ์ค์นํ 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 ์คํ ๊ณผ์ ์ ์๋์ ๊ทธ๋ฆผ์ ์ฐธ๊ณ ํ๋ฉด ๋ฉ๋๋ค.
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 ์ ๋ณด์ ๋ํ๋๋ ํด๋ผ์ด์ธํธ์ ์๋ฒ์ ์ํธ ์คํ ์๋ฆฌ๋ฅผ ๋ณด์ฌ์ค๋๋ค.
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์ ๋ค์ํ ๊ธฐ๋ฅ์ ๋ฐํ์ฌ ์ค๋ช ํด ๋ณด๊ฒ ์ต๋๋ค.
'โ๏ธ Cloud Native > ๐ณ Docker' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Docker] Docker Container ๋ช ๋ น์ด (with Ngnix Container ์คํ) (0) | 2024.11.05 |
---|---|
[Docker] Docker ๋ช ๋ น์ด ํ์ฉ Part.2 (0) | 2024.10.31 |
[Docker] Docker ๋ช ๋ น์ด ํ์ฉ Part.1 (0) | 2024.10.31 |
[Docker] Ubuntu์ Docker Community Edition (CE) ์ค์น (0) | 2024.10.08 |
[Docker] Docker Install (๋์ปค ์ค์น with UTM, Ubuntu install) (0) | 2024.10.07 |