1

我有一个运行应用程序服务器的 docker 容器。应用程序日志生成并存储在特定目录中。在我的场景中,该位置生成并存储了多个日志文件和跟踪。

我可以理解有多种方法可以访问这些日志 - 例如

docker exec -it <container_id> bash
ssh into the container (when the keys are set while creating the container)

除了上述两个示例之外,我还想通过不同的容器(运行 nginx 网络服务器)访问日志。从理论上讲,我可以理解在为应用服务器(第一个容器)创建 docker 容器时使用“--volumes-from”的概念,我们可以实现,但我不知道如何让它工作。

我的要求是,无论何时生成日志,都应该通过另一个容器的网络服务器提供服务。有没有办法我们可以像目录列表一样查看整个日志目录的目录列表(通过 Volumes ???)。

我尝试了这样的事情,但它没有按预期工作

docker run --name=log_webserver -p 80 --volumes-from logvol:/website_files nginx

docker run --name appcontainer -m 1024 -p 9080 -v sysvol:/var/log/rsyslog -v logvol:/opt/servers/simpleappserver/logs krckumar/simpleappserver

还有其他公开日志的方法吗?请建议。

4

1 回答 1

2
docker run --name container1 -v /website_files
docker run --name container2 --volumes_from container1

公开日志做....

docker logs -f container1

如果您在 ENTRYPOINT 脚本中使用 tail -f 记录日志,则此方法有效 - tail -f 还可以防止容器退出,因为 docker 以进程为中心。因为 tail -f 永远不会结束,所以你的容器永远不会退出。所以你可以调查里面发生了什么

docker exec -it container1 bash

还有什么问题请问。

PS 如果使用多个容器,您可能需要考虑使用 docker-compose,它易于学习并且完全基于 docker 命令本身。

于 2016-03-08T10:39:43.487 回答