한번 설치한 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' 카테고리의 다른 글
[Docker] Docker 명령어 활용 Part.2 (0) | 2024.10.31 |
---|---|
[Docker] Docker 명령어 활용 Part.1 (0) | 2024.10.31 |
[Cloud] Ubuntu에 Docker Community Edition (CE) 설치 (0) | 2024.10.08 |
[Cloud] Docker Install (도커 설치 with UTM, Ubuntu install) (0) | 2024.10.07 |
[Cloud] Kubernetes(쿠버네티스) & DevOps(데브옵스) Intro (0) | 2024.10.05 |