티스토리 뷰
먼저, 도커의 컨테이너에 대한 정보는 대부분 /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
- 윈도우
- date 미래
- http/0.9
- VXLAN
- 802.1ax
- dns 동작 방식
- ssh
- head end replication
- date 시간 지정
- Windows
- vlan
- link aggregation
- Switch
- 802.3ad
- data plane
- vtep
- tag
- http/1.0
- HTTP
- multiple ping
- iso8601
- date 과거
- ping multi
- bash
- vni
- dns 동작
- docker logs
- ping
- date 시간 변경
- HTTP/1.1
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |