Làm thế nào để xem đầu ra nhật ký bằng cách sử dụng docker-comp run run?


96

Khi sử dụng, docker-compose uptôi có thể xem nhật ký cho tất cả các vùng chứa trong docker-compose.ymltệp của mình .

Tuy nhiên, khi tôi sử dụng, docker-compose run apptôi chỉ thấy đầu ra bảng điều khiển appchứ không có dịch vụ nào appphụ thuộc vào. Làm thế nào có thể xem đầu ra nhật ký cho các dịch vụ khác?


4
Bạn có thể sử dụngdocker-compose logs -f service_name
Xiongbing Jin

Cũng lưu ý rằng hãy docker-compose runtạo vùng chứa mới mỗi khi bạn thực thi nó.
jazgot

Tôi đang chạy docker-compose runtrong circleci chỉ để chạy các bài kiểm tra của tôi nên sẽ ổn nếu nó tạo một vùng chứa mới. Vấn đề chính chỉ là không thấy đầu ra nhật ký từ các dịch vụ phụ thuộc.
sthomps

Câu trả lời:


135

Cập nhật ngày 1 tháng 7 năm 2019

docker-compose logs <name-of-service>

Từ tài liệu :

Cách sử dụng: nhật ký [tùy chọn] [DỊCH VỤ ...]

Các tùy chọn:

- không màu Tạo ra đầu ra đơn sắc.

-f, --follow Theo đầu ra nhật ký.

-t, --timestamps Hiển thị dấu thời gian.

--tail = "all" Số dòng hiển thị từ cuối nhật ký cho mỗi vùng chứa.

Xem nhật ký của docker

Bạn có thể bắt đầu soạn Docker ở chế độ tách rời và tự đính kèm vào nhật ký của tất cả vùng chứa sau này. Nếu bạn đã xem xong nhật ký, bạn có thể tách mình khỏi đầu ra nhật ký mà không cần tắt dịch vụ của mình.

  1. Sử dụng docker-compose up -dđể khởi động tất cả các dịch vụ ở chế độ tách rời ( -d) (bạn sẽ không thấy bất kỳ nhật ký nào ở chế độ tách biệt)
  2. Sử dụng docker-compose logs -f -tđể tự đính kèm vào nhật ký của tất cả các dịch vụ đang chạy , ngược lại -fcó nghĩa là bạn theo dõi kết xuất nhật ký và -ttùy chọn cung cấp cho bạn dấu thời gian (Xem tham khảo Docker )
  3. Sử dụng Ctrl + zhoặc Ctrl + cđể tách chính bạn khỏi đầu ra nhật ký mà không cần tắt các vùng chứa đang chạy của bạn

Nếu bạn quan tâm đến nhật ký của một vùng chứa, bạn có thể sử dụng dockertừ khóa để thay thế:

  1. Sử dụng docker logs -t -f <name-of-service>

Lưu đầu ra

Để lưu kết quả đầu ra vào một tệp, bạn thêm phần sau vào lệnh nhật ký của mình:

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

7
Tôi không biết tại sao đây là câu trả lời được chấp nhận. Câu hỏi là về việc chạy trình soạn thảo và rất nhiều lần bạn chạy điều đó với -rm nên không có nhật ký. Tôi muốn xem đầu ra của shell script khi tôi đang chạy nó.
James O'Brien

2
Mặc dù đây là thông tin hữu ích, nhưng đây KHÔNG phải là câu trả lời cho câu hỏi. Như @ JamesO'Brien nói, câu hỏi là về docker-compose runvà gắn với các dịch vụ, trong đó có những cái tên độc đáo từ các dịch vụ được liệt kê trongdocker.compose.yml
TetraDev

20

Nếu bạn muốn xem nhật ký đầu ra từ tất cả các dịch vụ trong thiết bị đầu cuối của mình.

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

Ví dụ: Giả sử bạn muốn ghi đầu ra của 5 dòng cuối cùng từ tất cả các dịch vụ

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

Nếu bạn muốn ghi đầu ra từ các dịch vụ cụ thể thì có thể thực hiện như sau:

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

Sử dụng:

Ví dụ. giả sử bạn có các dịch vụ API và cổng thông tin thì bạn có thể làm như sau:

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

Trong đó 5 đại diện cho 5 dòng cuối cùng từ cả hai bản ghi.

Tham khảo: https://docs.docker.com/v17.09/engine/admin/logging/view_container_logs/


5
  1. sử dụng lệnh để khởi động vùng chứa ở chế độ tách rời: docker-compose up -d
  2. để xem các vùng chứa sử dụng: docker ps
  3. để xem nhật ký cho một vùng chứa: docker logs <containerid>

1

Thật không may, chúng tôi cần phải chạy docker-compose logsriêng từ docker-compose run. Để làm cho điều này hoạt động một cách đáng tin cậy, chúng ta cần loại bỏ docker-compose runtrạng thái thoát sau đó chuyển hướng nhật ký và thoát với trạng thái phù hợp.

#!/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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.