본문 바로가기
개발팁

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

by devscb 2024. 12. 15.
반응형

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

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

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

실행 결과 예시)

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

컨테이너 로그 실시간 확인

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

실행 결과 예시)

[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.

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

docker ps

실행 결과 예시)

[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

컨테이너 모든 목록 확인

docker ps -a

실행 결과 예시)

[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

도커 볼륨 리스트 확인

docker volume ls

실행 결과 예시)

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

도커 볼륨 상세정보 확인

docker volume inspect [volume_name]

실행 결과 예시)


[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"
    }
]

도커 네트워크 리스트

docker network ls

실행 결과 예시)

[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

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

docker diff [container_name]

실행 결과 예시)

[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

 

728x90
반응형

댓글