跨容器共享数据

时间:2016-03-08 10:25:56

标签: logging docker volumes

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

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

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

除了上面两个例子,我想通过一个不同的容器(运行nginx webserver)访问日志。从理论上讲,我可以理解使用&#34; - volume-from&#34;在为app服务器(第一个容器)创建docker容器时,我们可以实现,但我不知道如何使它工作。

我的要求是每当生成日志时,都应该通过其他容器的网络服务器提供。有没有办法可以看到整个日志目录的目录列表(通过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

任何其他公开日志的方法?请建议。

1 个答案:

答案 0 :(得分:2)

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

公开日志做....

docker logs -f container1

如果您在ENTRYPOINT脚本中尾部显示日志,则此方法有效 - tail -f也会阻止容器退出,因为docker是以进程为中心的。因为tail -f永远不会结束,所以你的容器永远不会退出。所以你可以用

来调查里面发生的事情
docker exec -it container1 bash

再问任何问题。

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