2016-03-08 119 views
1

我有一個運行應用程序服務器的docker容器。應用程序日誌生成並存儲在特定的目錄中。在我的方案中,有多個日誌文件和跟蹤生成並存儲在該位置。跨容器共享數據

我可以理解,有多種方式來訪問這些日誌 - 如

docker exec -it <container_id> bash 
ssh into the container (when the keys are set while creating the container) 
從上面的兩個例子

除了,我想通過不同的容器來訪問日誌(其正在運行一個nginx網絡服務器)。從理論上講,我可以理解,在爲應用服務器(第一個容器)創建碼頭容器時使用「--volumes-from」的概念我們可以實現,但我不知道如何使其工作。

我的要求是每當生成日誌時,都應該通過其他容器的網絡服務器提供服務。有沒有辦法像目錄列表一樣查看整個日誌目錄的目錄列表(通過卷???)。

我想這樣的事情及其預期

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 

任何其他的方式來揭露日誌不工作?請建議。

+0

查看[this](http://nathanleclaire.com/blog/2015/04/27/automating-docker-logging-elasticsearch-logstash-kibana-and-logspout/)。這是一種內存飢餓,但在我的情況下,它會自動收集已啓動並正在運行的容器中的日誌。 –

回答

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

,露出原木做....

docker logs -f container1 

這個作品,如果您尾-f在入口點腳本日誌 - 尾-f還可以防止容器出口,因爲碼頭工人是流程爲中心。因爲tail -f永遠不會結束,所以你的容器永遠不會退出。所以你可以調查裏面發生了什麼

docker exec -it container1 bash 

更多問題請教。

PS如果使用多個容器,您可能需要考慮使用docker-compose,這很容易學習,完全基於docker命令本身。