Docker nhìn vào nhật ký của một vùng chứa đã thoát


Câu trả lời:


105

Sử dụng docker logs. Nó cũng hoạt động đối với các vùng chứa đã dừng và nắm bắt toàn bộ luồng STDOUT và STDERR của quy trình chính của vùng chứa:

$ docker run -d --name test debian echo "Hello World"
02a279c37d5533ecde76976d7f9d1ca986b5e3ec03fac31a38e3dbed5ea65def

$ docker ps -a
CONTAINER ID    IMAGE     COMMAND        CREATED             STATUS                     PORTS               NAMES
49daa9d41a24    debian    "echo test"    2 minutes ago       Exited (0) 2 minutes ago                       test

$ docker logs -t test
2016-04-16T15:47:58.988748693Z Hello World

4
Đối với ngăn xếp docker nơi nó khởi động lại sau mỗi vài giây: stack=s1 && c=$(task_id=$(docker stack ps "$stack" --filter desired-state=shutdown | tail -n +2 | head -n 1 | awk '{print $1}') && docker inspect --format '{{.Status.ContainerStatus.ContainerID}}' "$task_id") && docker logs "$c"Tên ngăn xếp được chỉ định ở đầu lệnh.
x-yuri

17

docker logs --tail=50 <container id> trong năm mươi dòng cuối cùng - hữu ích khi vùng chứa của bạn đã hoạt động trong một thời gian dài.


1
@Whitefret, tôi đã cập nhật câu trả lời theo đề xuất của bạn. Câu trả lời ban đầu sẽ kéo toàn bộ nhật ký xuống và gắn nó cục bộ, sẽ mất một thời gian rất dài với một nhật ký lớn và mạng chậm
Matthew

Trong trình quản lý cảnh báo, tôi thấy rất nhiều thông báo này nhưng không chắc liệu chúng có liên quan đến cảnh báo hay không:
Arnav Bose

10

Bạn có thể sử dụng lệnh dưới đây để sao chép nhật ký ngay cả từ một vùng chứa đã thoát:

docker cp container_name :path_of_file_in_container destination_path_locally

Ví dụ:

docker cp sravya:/tmp/report /root/mylog

6

Để xem trực tiếp tệp nhật ký của một vùng chứa đã thoát với ít hơn, được cuộn đến cuối tệp, tôi sử dụng:

docker inspect $1 | grep 'LogPath' | sed -n "s/^.*\(\/var.*\)\",$/\1/p" | xargs sudo less +G

chạy dưới dạng ./viewLogs.sh CONTAINERNAME

Phương pháp này có lợi ích hơn so với các docker logscách tiếp cận dựa trên, đó là tệp được mở trực tiếp, thay vì truyền trực tuyến.

sudo là cần thiết, vì LogPath / File thường thuộc quyền sở hữu của root

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.