溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何查看Docker容器日志

發(fā)布時(shí)間:2021-12-14 10:18:05 來源:億速云 閱讀:437 作者:iii 欄目:云計(jì)算

本篇內(nèi)容介紹了“如何查看Docker容器日志”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

驗(yàn)證Docker正常啟動(dòng)

使用docker info 命令,返回所有容器和鏡像的數(shù)量、docker版本、使用的執(zhí)行驅(qū)動(dòng)和存儲(chǔ)驅(qū)動(dòng)以及Docker的基本配置等。之前說過Docker是基于client-server架構(gòu),它有一個(gè)docker程序,既能做客戶端又能做服務(wù)器端。作為客戶端時(shí),docker程序向Docker守護(hù)進(jìn)程發(fā)送請求,然后再對返回的請求結(jié)果進(jìn)行處理。

運(yùn)行第一個(gè)容器

可使用docker run 命令創(chuàng)建容器。它提供了容器的創(chuàng)建到啟動(dòng)功能。運(yùn)行

docker run -i -t ubuntu /bin/bash
  • 參數(shù) -i 保證容器中STDIN是開啟的;

  • 參數(shù)-t告訴Docker為要?jiǎng)?chuàng)建的容器分配一個(gè)偽tty終端。這樣新建的容器才能提供一個(gè)交互式shell;

  • 接下來告訴Docker基于什么鏡像來創(chuàng)建容器,上例使用的是ubuntu鏡像,它是一個(gè)基礎(chǔ)鏡像,由Docker公司提供,保存在Docker Hub Registry上。

  • 最后告訴Docker在新容器中要運(yùn)行什么命令,本例中在容器中運(yùn)行/bin/bash命令啟動(dòng)了一個(gè)Bash shell。

運(yùn)行命令后Docker會(huì)檢查本地是否存在ubuntu鏡像,如果沒有就會(huì)連接Docker Hub Registry查看是否有該鏡像,一旦找到就會(huì)下載并保存到本地宿主機(jī)中。

隨后Docker在文件系統(tǒng)內(nèi)部用這個(gè)鏡像創(chuàng)建了一個(gè)新容器。它擁有自己的IP地址,以及一個(gè)用來和宿主機(jī)進(jìn)行通信的橋接網(wǎng)絡(luò)接口。

當(dāng)容器創(chuàng)建完畢之后,Docker會(huì)執(zhí)行容器中的/bin/bash命令,這時(shí)就可以看到容器內(nèi)的shell了。

使用第一個(gè)容器

通過啟動(dòng)我們以root用戶登錄到了新容器紅。這是一個(gè)完整的ubuntu系統(tǒng)。

輸入exit就可以從容器返回到宿主機(jī)的命令行了。同時(shí)容器也停止運(yùn)行。但是容器仍然是存在的。可以使用docker ps -a 命令查看當(dāng)前系統(tǒng)中的容器列表。

docker ps命令只顯示正在運(yùn)行的容器,添加-a參數(shù)列出所有容器。-l 參數(shù)列出最后一次運(yùn)行的容器,包括正在運(yùn)行和已經(jīng)停止的。

可以看出有三種方式可唯一指代一個(gè)容器:長UUID、短UUID和名稱。

容器命名

之前創(chuàng)建容器時(shí)Docker自動(dòng)生成了一個(gè)隨機(jī)名稱。如果創(chuàng)建容器時(shí)想指定名稱可以使用--name參數(shù)。

docker run --name ivan_container -i -t ubuntu /bin/bash

一個(gè)合法的容器名稱只能包含以下字符:小寫字母、大寫字母、數(shù)字、下劃線、圓點(diǎn)、橫線。

容器的命名是唯一的

docker rm 容器名 可以刪除容器。

重新啟動(dòng)已停止的容器

docker start 容器名
docker start 容器ID

附著在容器上

Docker容器重新啟動(dòng)時(shí),會(huì)沿用docker run 命令時(shí)指定的參數(shù)來運(yùn)行,因此容器重新啟動(dòng)后會(huì)運(yùn)行一個(gè)交互式會(huì)話shell。

可以用“docker attach 容器名/容器ID“命令重新附著到該容器的會(huì)話上。運(yùn)行完命令后需要按下回車進(jìn)入該會(huì)話。

創(chuàng)建守護(hù)式容器

除了上面創(chuàng)建的交互式運(yùn)行的容器,也可以創(chuàng)建長期運(yùn)行的守護(hù)式容器。它沒有交互式會(huì)話,非常適合運(yùn)行應(yīng)用程序和服務(wù)。大多數(shù)時(shí)候都需要以守護(hù)式來運(yùn)行容器。

docker run --name daemon_dave -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1 done"

在docker run上使用參數(shù)-d,容器會(huì)被放到后臺運(yùn)行。

查看容器日志

docker logs 容器名

-f 參數(shù)監(jiān)控容器實(shí)時(shí)日志

docker logs -f 容器名

用Ctrl + C退出日志監(jiān)控。

--tail 行數(shù) 獲取最后幾行日志

docker logs --tail 10 容器名

使用

docker logs --tail 0 -f 容器名

監(jiān)控某個(gè)容器的最新日志而不必讀取整個(gè)日志文件。

使用 -t 參數(shù)為每條日志項(xiàng)加上時(shí)間戳。

docker logs -ft 容器名

查看容器內(nèi)的進(jìn)程

docker top 容器名

在容器內(nèi)部運(yùn)行進(jìn)程

在Docker 1.3之后,可以通過docker exec命令在容器被額外啟動(dòng)新進(jìn)程??梢栽谌萜鲀?nèi)運(yùn)行的進(jìn)程有兩種類型:后臺任務(wù)和交互式任務(wù)。

后臺任務(wù)的例子:

docker exec -d 容器名 touch /etc/new_config_file

-d 表示需要運(yùn)行一個(gè)后臺進(jìn)程。之后是指定運(yùn)行的容器和執(zhí)行的命令。本例中新建了一個(gè)空文件。

交互任務(wù)的例子:

docker exec -t -i 容器名 /bin/bash

停止守護(hù)式容器

docker stop 容器名

docker stop 命令會(huì)向Docker容器進(jìn)程發(fā)送SIGTERM信號。如果想快速停止某個(gè)容器,可以使用docker kill命令向容器進(jìn)程發(fā)送SIGKILL信號。

docker ps -n x 命令會(huì)顯示最后x個(gè)容器,不論容器正在運(yùn)行還是已經(jīng)停止。

自動(dòng)重啟容器

創(chuàng)建容器時(shí)可以通過--restart參數(shù)讓Docker自動(dòng)重新啟動(dòng)該容器。--restart標(biāo)志會(huì)檢查容器的退出代碼,并據(jù)此來決定是否要重啟容器。

docker run --restrart=always --name daemon_dave -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"

--restart標(biāo)志被設(shè)置為always,無論容器的退出代碼是什么,Docker都會(huì)自動(dòng)重啟該容器。除了always,還可以設(shè)置為on-failure,這樣只有當(dāng)容器的退出代碼為非0值得時(shí)候,才會(huì)自動(dòng)重啟。另外on-failure還接收一個(gè)可選的重啟次數(shù)參數(shù):

--restart=on-failure:5

這樣當(dāng)容器退出代碼非0時(shí),Docker會(huì)嘗試自動(dòng)重啟該容器,最后重啟5次。

--restart是1.2.0版本引入的。

詳細(xì)的容器信息

docker inspect 容器名

查看容器的詳細(xì)信息。使用-f --format來選定要查看的內(nèi)容:

docker inspect --format='{{.State.Running}}' 容器名

查看容器的運(yùn)行狀態(tài)。

docker inspect --format '{{.NetworkSettings.IPAddress}}' 容器1 /容器2

查看容器的IP地址,可以同時(shí)制定多個(gè)容器,如上例所示。

--format -f支持完整的Go語言模板。

還可以瀏覽/var/lib/docker目錄來深入了解Docker的工作原理。該目錄存放著Docker鏡像、容器以及容器的配置。所有的容器都保存在/var/lib/docker/containers目錄下。

刪除容器

使用docker rm刪除容器。

運(yùn)行中的docker容器是無法刪除的。必須先通過docker stop或docker kill 命令停止容器,才能將其刪除。

目前沒有辦法一次刪除所有容器,不過可以通過小技巧來刪除:

docker rm 'docker ps -a -q'

-a 表示列出所有容器,-q表示只需要返回容器的ID不返回其他信息。

“如何查看Docker容器日志”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI