0%

docker 디버깅시 유용한 명령어들

docker

최근 docker를 사용하면서 컨테이너의 app이 정상 동작 안하는 현상이 있었는데,
원인을 찾기위해 사용한 명령어들을 몇가지 정리해보았습니다.

컨테이너 안 bash 실행하여 파일구조 확인하기

1
docker exec -it [container_name] /bin/bash
  • -i 옵션은 stdin 을 열린채로 유지한다는 뜻입니다.
    (해당옵션을 제외한다면, 쉘이 종료되고 아무일도 일어나지 않은것처럼 됩니다.)
  • -t 옵션은 pesudo TTY (터미널)를 할당한다는뜻입니다.
    (해당옵션을 제외한다면, 비밀번호 입력할 때 비밀번호가 터미널 상에 노출되는 등 기존 터미널과 다르게 보일 수 있습니다)

실행 결과 예시)

1
2
3
[root@server test]# docker exec -it bookstack /bin/bash       
root@23f70c20ee33:/#

컨테이너 로그 실시간 확인

1
docker logs -f --tail 10 [container_name]
  • -f 옵션은 실시간으로 출력되는 로그를 계속 확인한다는 옵션임
  • –tail 10 옵션은 최근 10개의 라인을 표시하는 옵션임

실행 결과 예시)

1
2
3
4
5
6
7
8
9
10
11
12
[root@server test]# docker logs -f --tail 10 bookstack
Build-date: 2024-11-08T15:06:42+00:00
───────────────────────────────────────

using keys found in /config/keys
Waiting for DB to be available

INFO Nothing to migrate.

[custom-init] No custom files found, skipping...
[ls.io-init] done.

컨테이너 실행 중인 목록 확인

1
docker ps

실행 결과 예시)

1
2
3
4
5
[root@server test]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
23f70c20ee33 prod-1.0.0 "/init" 2 weeks ago Up 2 weeks 443/tcp, 0.0.0.0:6875->80/tcp bookstack
394fa9c62edb lscr.io/linuxserver/mariadb "/init" 4 weeks ago Up 4 weeks 0.0.0.0:3406->3306/tcp bookstack_db

컨테이너 모든 목록 확인

1
docker ps -a

실행 결과 예시)

1
2
3
4
5
[root@server test]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
23f70c20ee33 prod-1.0.0 "/init" 2 weeks ago Up 2 weeks 443/tcp, 0.0.0.0:6875->80/tcp bookstack
394fa9c62edb lscr.io/linuxserver/mariadb "/init" 4 weeks ago Up 4 weeks 0.0.0.0:3406->3306/tcp bookstack_db

도커 볼륨 리스트 확인

1
docker volume ls

실행 결과 예시)

1
2
3
4
[root@server test]# docker volume ls
DRIVER VOLUME NAME
local 30c678cbd72e968b38cc1bbf9ad7c7d8c41ca4bd189915ba27a4e85483a8b6ef

도커 볼륨 상세정보 확인

1
docker volume inspect [volume_name]

실행 결과 예시)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

[root@server ~]# docker volume inspect 30c678cbd72e968b38cc1bbf9ad7c7d8c41ca4bd189915ba27a4e85483a8b6ef
[
{
"CreatedAt": "2024-11-12T23:04:02+09:00",
"Driver": "local",
"Labels": {
"com.docker.volume.anonymous": ""
},
"Mountpoint": "/var/lib/docker/volumes/30c678cbd72e968b38cc1bbf9ad7c7d8c41ca4bd189915ba27a4e85483a8b6ef/_data",
"Name": "30c678cbd72e968b38cc1bbf9ad7c7d8c41ca4bd189915ba27a4e85483a8b6ef",
"Options": null,
"Scope": "local"
}
]

도커 네트워크 리스트

1
docker network ls

실행 결과 예시)

1
2
3
4
5
6
7
[root@server ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
712ddb6d4653 bookstack_default bridge local
3581870ea5df bridge bridge local
32024698f977 host host local
64aa20866031 none null local

컨테이너 변경사항 확인(컨테이너 실행후 최초 이미지에서 변경된 내용을 확인)

1
docker diff [container_name]

실행 결과 예시)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@server ~]# docker diff bookstack 
C /run
C /run/s6-rc
C /run/branding
C /run/crond.pid
C /run/service
C /run/service/.s6-svscan
C /run/service/.s6-svscan/SIGPWR
C /run/service/.s6-svscan/SIGWINCH
C /run/service/.s6-svscan/control
C /run/service/.s6-svscan/finish
C /run/service/.s6-svscan/lock
C /run/service/.s6-svscan/SIGINT
C /run/service/.s6-svscan/SIGQUIT
C /run/service/.s6-svscan/SIGTERM
C /run/service/.s6-svscan/SIGUSR1
C /run/service/.s6-svscan/SIGUSR2
C /run/service/.s6-svscan/crash
C /run/service/s6rc-oneshot-runner