डॉक-कंपोज़ रन का उपयोग करके लॉग आउटपुट कैसे देखें?


96

जब मैं उपयोग करता docker-compose upहूं तो मैं अपनी docker-compose.ymlफ़ाइल के सभी कंटेनरों के लिए लॉग देख सकता हूं ।

हालाँकि, जब मैं उपयोग करता docker-compose run appहूं तो मुझे केवल कंसोल आउटपुट दिखाई देता है, appलेकिन appइस पर निर्भर रहने वाली सेवाओं में से कोई भी । अन्य सेवाओं के लिए लॉग आउटपुट कैसे देख सकते हैं?


4
आप का उपयोग कर सकते हैंdocker-compose logs -f service_name
Xiongbing जिन

यह भी ध्यान दें कि docker-compose runहर बार जब आप इसे निष्पादित करते हैं तो नया कंटेनर बनाता है।
jazgot

docker-compose runअगर यह एक नया कंटेनर बनाता है तो मैं अपने परीक्षणों को चलाने के लिए सिर्फ मंडली में दौड़ रहा हूं। मुख्य मुद्दा सिर्फ आश्रित सेवाओं से लॉग आउटपुट नहीं देखना है।
शाम

जवाबों:


135

अपडेट 1 जुलाई 2019

docker-compose logs <name-of-service>

से प्रलेखन :

उपयोग: लॉग [विकल्प] [सेवा ...]

विकल्प:

-कोई रंग का उत्पादन मोनोक्रोम उत्पादन।

-f, --फॉलो लॉग आउटपुट का पालन करें।

-t, --timestamps टाइमस्टैम्प दिखाएं।

--ett = "all" प्रत्येक कंटेनर के लिए लॉग के अंत से दिखाने के लिए लाइनों की संख्या।

डॉक लॉग देखें

आप डॉकटर रचना को अलग मोड में शुरू कर सकते हैं और बाद में सभी कंटेनर के लॉग में खुद को संलग्न कर सकते हैं । यदि आप लॉग देख रहे हैं तो आप अपनी सेवाओं को बंद किए बिना लॉग आउटपुट से खुद को अलग कर सकते हैं।

  1. अलग मोड में सभी सेवाओंdocker-compose up -d को शुरू करने के लिए उपयोग करें ( -d) (आप किसी भी लॉग को अलग मोड में नहीं देखेंगे)
  2. सभी चल रही सेवाओं के लॉग में खुद docker-compose logs -f -tको संलग्न करने के लिए उपयोग करें , जबकि आप लॉग आउटपुट का पालन करते हैं और विकल्प आपको टाइमस्टैम्प देता है ( डॉक्यूमेंट देखें देखें )-f-t
  3. अपने चल रहे कंटेनरों को बंद किए बिना लॉग आउटपुट से स्वयं को अलग करने Ctrl + zया उपयोग Ctrl + cकरने के लिए

यदि आप एकल कंटेनर के लॉग में रुचि रखते हैं, तो आप dockerइसके बजाय कीवर्ड का उपयोग कर सकते हैं :

  1. उपयोग docker logs -t -f <name-of-service>

आउटपुट सहेजें

फ़ाइल को आउटपुट सहेजने के लिए आप अपने लॉग कमांड में निम्नलिखित जोड़ते हैं:

  1. docker-compose logs -f -t >> myDockerCompose.log

7
मुझे नहीं पता कि यह स्वीकृत उत्तर क्यों है। प्रश्न डॉकटर-कंपोज़ रन के बारे में था और कई बार आप चलाते हैं कि -rm के साथ इसलिए कोई लॉग नहीं हैं। मैं शेल स्क्रिप्ट का आउटपुट देखना चाहूंगा क्योंकि मैं इसे चला रहा हूं।
जेम्स ओ ब्रायन

2
हालांकि यह उपयोगी जानकारी है, यह सवाल का जवाब नहीं है। जैसा कि @ JamesO'Brien ने कहा, यह सवाल docker-compose runउन सेवाओं के बारे में है और संलग्न हैं, जिनमें सूचीबद्ध सेवाओं से अद्वितीय नाम हैंdocker.compose.yml
TetraDev

20

यदि आप अपने टर्मिनल की सभी सेवाओं से आउटपुट लॉग देखना चाहते हैं ।

docker-compose logs -t -f --tail <no of lines> 

उदाहरण: मान लीजिए कि आप सभी सेवा से अंतिम 5 लाइनों का आउटपुट लॉग करना चाहते हैं

docker-compose logs -t -f --tail 5

यदि आप विशिष्ट सेवाओं से आउटपुट लॉग करना चाहते हैं तो इसे नीचे दिया जा सकता है:

docker-compose logs -t -f --tail <no of lines> <name-of-service1> <name-of-service2> ... <name-of-service N>

उपयोग:

उदाहरण के लिए। कहते हैं कि आपके पास एपीआई और पोर्टल सेवाएं हैं, तो आप नीचे कुछ कर सकते हैं:

docker-compose logs -t -f --tail 5 portal api

जहां 5 दोनों लॉग से अंतिम 5 लाइनों का प्रतिनिधित्व करता है।

रेफरी: https://docs.docker.com/v17.09/engine/admin/log/view_container_logs/


5
  1. अलग मोड में कंटेनर शुरू करने के लिए कमांड का उपयोग करें: docker-compose up -d
  2. कंटेनरों का उपयोग देखने के लिए: docker ps
  3. एक कंटेनर के लिए लॉग देखने के लिए: docker logs <containerid>

1

दुर्भाग्य से हमें इससे docker-compose logsअलग चलने की जरूरत है docker-compose run। मज़बूती से काम करने के लिए इसे पाने के लिए हमें docker-compose runबाहर निकलने की स्थिति को दबाने की ज़रूरत है और फिर लॉग को सही स्थिति से बाहर निकलने के लिए पुनर्निर्देशित करें।

#!/bin/bash
set -euo pipefail
docker-compose run app | tee app.log || failed=yes
docker-compose logs --no-color > docker-compose.log
[[ -z "${failed:-}" ]] || exit 1
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.