Có cách nào tôi có thể xem nhật ký của một vùng chứa đã thoát không?
Tôi có thể lấy id vùng chứa của vùng chứa đã thoát bằng cách sử dụng docker ps -a
nhưng tôi muốn biết điều gì đã xảy ra khi nó đang chạy.
Có cách nào tôi có thể xem nhật ký của một vùng chứa đã thoát không?
Tôi có thể lấy id vùng chứa của vùng chứa đã thoát bằng cách sử dụng docker ps -a
nhưng tôi muốn biết điều gì đã xảy ra khi nó đang chạy.
Câu trả lời:
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
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.
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.
Để 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 logs
cá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