본문 바로가기

kubernetes

구글 스터디잼 쿠버네티스 입문반 스터디 - 04

728x90
반응형

도커 디버깅

 

1) 컨테이너 디버깅

docker logs -f [container_id]

-f 옵션을 주면 컨테이너가 실행되고 있을때 로그를 확인할 수 있다. 

 

➜ docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED       STATUS       PORTS                  NAMES
62de398ddb39   node-app:0.2   "docker-entrypoint.s…"   9 hours ago   Up 9 hours   0.0.0.0:8080->80/tcp   my-app-2

➜  ~ docker logs -f 62de398ddb39
Server running at http://0.0.0.0:80/

아까 만들어서 실행중인 도커 컨테이너의 로그를 확인해볼 수 있다. 

 

2) docker exec

docker exec -it [container_id] bash

실행되고 있는 도커 컨테이너의 bash shell을 열고 싶을때 

-it flag는 가상의 터미널을 할당하고 입력 스트림을 열어 컨테이너 내에서 상호작용할 수 있도록 도와주는 옵션이다.

dockerfile에서 working directory를 /app 로 할당해 줬기 때문에 bash는 app 폴더 안에서 돌아간다. 

 

docker exec -it 62de398ddb39 bash

root@62de398ddb39:/app# ls

Dockerfile  app.js

때문에 가상의 쉘로 접속하여 ls 명령어를 입력하면 dockerfile과 애플리케이션 코드인 app.js가 들어있는 것을 확인 할 수 있다. 

 

쉘을 벗어 나기 위해서는 

exit

커맨드로 나오면 된다. 

 

3) docker inspect

docker inspect [container_id]

docker container의 메타데이터를 확인하기 위한 명령어이다. 

 

docker inspect 62de398ddb39
[
    {
        "Id": "62de398ddb396ef04462a892ef8f06defc76d11d8db6b5199187f9a1c7e4596f",
        "Created": "2023-04-16T02:04:34.445342042Z",
        "Path": "docker-entrypoint.sh",
        "Args": [
            "node",
            "app.js"
        ],
        "State": {
            "Status": "running",

실제 명령어를 실행해보면 아래와 같은 도커 컨테이너의 메타데이터를 확인할 수 있다. 

 

docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' [container_id]

--format 옵션을 사용하면 json결과 중 특정한 필드만 뽑아서 확인할 수 있다. 

 

➜  ~ docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 62de398ddb39
172.17.0.3

위처럼 ip 주소만 확인도 가능하다. 

728x90
반응형