当我用service docker start
或docker -d
启动我的docker守护程序时,我通常会得到我的shell终端。但是当需要输出docker守护程序日志时,日志会直接打印在我的屏幕上,我丢失了我的shell终端。我按ENTER键再次获得shell终端。我不想要这个。打印docker守护程序登录到日志文件对我来说会更好。如何将我的docker日志打印成日志文件而不是STDOUT?
答案 0 :(得分:2)
Unix有一个“重定向”的概念,所以你可以让stdout转到一个文件,而不是使用这样的命令:
docker -d > my_logfile
(你可能还想重定向stderr)
现在,更复杂的版本正是docker service startup script所做的:
start-stop-daemon [...] >> "$DOCKER_LOGFILE" 2>&1
所以如果您使用该路线,我不确定为什么您会看到终端的输出。
答案 1 :(得分:-1)
另一种选择是在启动容器时安装volume。并从主机读取日志。
例如:
docker run -d -v /mnt/logs:/mnt/logs <image>
上面的命令将启动一个容器,并将/mnt/logs
从主机附加到容器中的/mnt/logs
。然后,您需要更改您的应用程序以将日志写入指定目录中的某个文件。您还可以从主机读取此文件。