fedora コンテナを起動して適当にコマンドをいくつか打ってみます
user@PC005:/mnt/c/WINDOWS/system32$ sudo docker run -it fedora
[root@b50fa270db7e /]# ls
bin boot dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
[root@b50fa270db7e /]# cat /etc/fedora-release
Fedora release 35 (Thirty Five)
[root@b50fa270db7e /]# python3
Python 3.10.0 (default, Oct 4 2021, 00:00:00) [GCC 11.2.1 20210728 (Red Hat 11.2.1-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 1+1
2
>>> exit()
[root@b50fa270db7e /]# exit
exit
単純に出力する ls や cat だけでなく python3 のインタラクティブモードで処理を実行したりもしてます
logs サブコマンドでこのコンテナを指定すると
user@PC005:/mnt/c/WINDOWS/system32$ sudo docker logs b50 -t
2022-02-02T08:27:57.299750500Z [root@b50fa270db7e /]# ls
bin boot dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
2022-02-02T08:28:04.372611200Z [root@b50fa270db7e /]# cat /etc/fedora-release
Fedora release 35 (Thirty Five)
2022-02-02T08:28:14.276586600Z [root@b50fa270db7e /]# python3
Python 3.10.0 (default, Oct 4 2021, 00:00:00) [GCC 11.2.1 20210728 (Red Hat 11.2.1-1)] on linux
2022-02-02T08:28:14.303025200Z Type "help", "copyright", "credits" or "license" for more information.
2022-02-02T08:28:18.316116000Z >>> 1+1
2022-02-02T08:28:18.316329100Z 2
2022-02-02T08:28:20.756528500Z >>> exit()
2022-02-02T08:28:29.796579000Z [root@b50fa270db7e /]# exit
exit-02-02T08:28:29.796598700Z
自分の入力したコマンドも出力もすべて表示できました
-t オプションでタイムスタンプを表示です
-t をなくせばタイムスタンプなしでコンソール上の見た目と一緒です
ログデータはただのテキストではなく シェルのエスケープ文字等も含まれるようでタイムスタンプを表示すると一部おかしくなったりします
最後の行で 2022 が exit に置き換わっていますが こういうのがたまに発生します
ログの実体のファイルは↓にあります
/var/lib/docker/containers/{id}/{id}-json.log
id にコンテナ id が入ります
user@PC005:/mnt/c/WINDOWS/system32$ sudo ls /var/lib/docker/containers
b50fa270db7ea5ee9eb14aadbe09fe9803aeae6f54ba342600f0079d4c43aef8
user@PC005:/mnt/c/WINDOWS/system32$ sudo cat /var/lib/docker/containers/b50fa270db7ea5ee9eb14aadbe09fe9803aeae6f54ba342600f0079d4c43aef8/b50fa270db7ea5ee9eb14aadbe09fe9803aeae6f54ba342600f0079d4c43aef8-json.log
{"log":"\u001b]0;@b50fa270db7e:/\u0007\u001b[?2004h[root@b50fa270db7e /]# ls\r\n","stream":"stdout","time":"2022-02-02T08:27:57.2997505Z"}
{"log":"\u001b[?2004l\r\u001b[0m\u001b[01;36mbin\u001b[0m \u001b[01;34mboot\u001b[0m \u001b[01;34mdev\u001b[0m \u001b[01;34metc\u001b[0m \u001b[01;34mhome\u001b[0m \u001b[01;36mlib\u001b[0m \u001b[01;36mlib64\u001b[0m \u001b[01;34mlost+found\u001b[0m \u001b[01;34mmedia\u001b[0m \u001b[01;34mmnt\u001b[0m \u001b[01;34mopt\u001b[0m \u001b[01;34mproc\u001b[0m \u001b[01;34mroot\u001b[0m \u001b[01;34mrun\u001b[0m \u001b[01;36msbin\u001b[0m \u001b[01;34msrv\u001b[0m \u001b[01;34msys\u001b[0m \u001b[30;42mtmp\u001b[0m \u001b[01;34musr\u001b[0m \u001b[01;34mvar\u001b[0m\r\n","stream":"stdout","time":"2022-02-02T08:27:57.30205Z"}
{"log":"\u001b]0;@b50fa270db7e:/\u0007\u001b[?2004h[root@b50fa270db7e /]# cat /etc-o\u0008\u001b[K\u0008\u001b[K/fedora-release \r\n","stream":"stdout","time":"2022-02-02T08:28:04.3726112Z"}
{"log":"\u001b[?2004l\rFedora release 35 (Thirty Five)\r\n","stream":"stdout","time":"2022-02-02T08:28:04.3758671Z"}
{"log":"\u001b]0;@b50fa270db7e:/\u0007\u001b[?2004h[root@b50fa270db7e /]# python3\r\n","stream":"stdout","time":"2022-02-02T08:28:14.2765866Z"}
{"log":"\u001b[?2004l\rPython 3.10.0 (default, Oct 4 2021, 00:00:00) [GCC 11.2.1 20210728 (Red Hat 11.2.1-1)] on linux\r\n","stream":"stdout","time":"2022-02-02T08:28:14.3029901Z"}
{"log":"Type \"help\", \"copyright\", \"credits\" or \"license\" for more information.\r\n","stream":"stdout","time":"2022-02-02T08:28:14.3030252Z"}
{"log":"\u003e\u003e\u003e 1+1\r\n","stream":"stdout","time":"2022-02-02T08:28:18.316116Z"}
{"log":"2\r\n","stream":"stdout","time":"2022-02-02T08:28:18.3163291Z"}
{"log":"\u003e\u003e\u003e exit()\r\n","stream":"stdout","time":"2022-02-02T08:28:20.7565285Z"}
{"log":"\u001b]0;@b50fa270db7e:/\u0007\u001b[?2004h[root@b50fa270db7e /]# exit\r\n","stream":"stdout","time":"2022-02-02T08:28:29.796579Z"}
{"log":"\u001b[?2004l\rexit\r\n","stream":"stdout","time":"2022-02-02T08:28:29.7965987Z"}
一つ一つの行が JSON 形式で 日付や本文が入っています
Docker は試しにあれこれやるときによく使うので その時のログをコンソールだけじゃなくてファイルにもログを残しておきたいってときに便利そうです
本来は シェルで自分が操作したログではなく データベースやウェブサーバのサービスを起動させたときのログを見る用途だと思いますけど