티스토리 뷰

먼저, 도커의 컨테이너에 대한 정보는 대부분 /var/lib/docker/containers/[Container-ID] directory 내에 저장된다.

당연히 로그 파일도 /var/lib/docker/containers/[Container-ID]/[Container-ID]-json.log란 포맷으로 해당 컨테이너 directory 밑에 존재한다. 

이외에도 docker inspect [container명] 명령어를 통하여 해당 container의 ID/Hostname/LogPath/Resource 등 전반적인 모든 정보를 알 수 있다.

inspect에 출력되는 정보는 json형태로 출력되기 때문에 jq를 통하여도 파싱하여 사용할 수 있다.

 

[Commands]

- 컨테이너의 모든 정보 확인 : docker inspect [컨테이너명]

root$ docker inspect testcontainer
[
    {
        "Id": "62147(생략)",
        "Created": "2020-10-28T02:16:14.807240106Z",
        "Path": "/init",
        "Args": [],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 28586,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2020-11-16T02:29:14.937533566Z",
            "FinishedAt": "2020-11-13T21:53:33.814430587Z"
        },
        "Image": "sha256:891ac5(생략)",
        "ResolvConfPath": "/var/lib/docker/containers/62147(생략)/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/62147(생략)/hostname",
        "HostsPath": "/var/lib/docker/containers/62147(생략)/hosts",
        "LogPath": "/var/lib/docker/containers/62147(생략)/62147(생략)-json.log",
        "Name": "/testcontainer",
        (이하 생략)

컨테이너의 ID/Hostname/LogPath/Resource 등의 모든 정보를 확인할 수 있다.

 

 

- 컨테이너 로그 확인 : docker logs [옵션] [컨테이너명]

root$ docker logs -h
Flag shorthand -h has been deprecated, please use --help

Usage:  docker logs [OPTIONS] CONTAINER

Fetch the logs of a container

Options:
      --details        Show extra details provided to logs
  -f, --follow         Follow log output
      --since string   Show logs since timestamp (e.g. 2013-01-02T13:23:37) or relative (e.g. 42m for 42 minutes)
      --tail string    Number of lines to show from the end of the logs (default "all")
  -t, --timestamps     Show timestamps
      --until string   Show logs before a timestamp (e.g. 2013-01-02T13:23:37) or relative (e.g. 42m for 42 minutes)

그냥 docker logs [컨테이너명]을 입력하면 모든 로그가 출력되어 버린다. 따라서, 아래 옵션들을 참고하여 활용하면 상황에 따라 필요한 부분만 로그를 확인할 수 있다.

ex) 2020/11/16 02:00:00 이후 로그 출력하되, timestamp를 적용하여 출력

root$ docker logs testcontainer -t --since 2020-11-16T02:00:00 | head -n 5
2020-11-16T02:29:15.031044702Z [s6-init] making user provided files available at /var/run/s6/etc...exited 0.
2020-11-16T02:29:15.095762504Z [s6-init] ensuring user provided files have correct perms...exited 0.
2020-11-16T02:29:15.097730678Z [fix-attrs.d] applying ownership & permissions fixes...
2020-11-16T02:29:15.099645048Z [fix-attrs.d] done.
2020-11-16T02:29:15.101067907Z [cont-init.d] executing container initialization scripts...

 

Monologue

TMI)

대부분의 코드나 OSS들의 timestamp들은 ISO8601(YYYY-mm-ddTHH:MM:SS)을 사용하는데, docker의 timestamp도 ISO8601의 형태를 띄는 것 같다. 기억해 두면 좋을 것 같다.

 

사실 container networking을 docker를 통해서 처음 접하기도 했고, 포스팅을 작성할 때 Tistory의 URI 넘버링이 1부터 순서대로 생성되어 기초부터 순차대로 차근차근 작성하려고 했지만.. 그냥 생각날 때마다 작성하면서 하는게 제일 좋은 것 같다.

 

Reference

 - docs.docker.com/engine/reference/commandline/logs/

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함