本篇內(nèi)容介紹了“如何查看Docker容器日志”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
在平安等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì) 網(wǎng)站設(shè)計(jì)制作按需求定制制作,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站建設(shè),成都全網(wǎng)營(yíng)銷,成都外貿(mào)網(wǎng)站建設(shè),平安網(wǎng)站建設(shè)費(fèi)用合理。
驗(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ā)送請(qǐng)求,然后再對(duì)返回的請(qǐng)求結(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)行。但是容器仍然是存在的??梢允褂?strong>docker ps -a命令查看當(dāng)前系統(tǒng)中的容器列表。
docker ps命令只顯示正在運(yùn)行的容器,添加-a參數(shù)列出所有容器。-l 參數(shù)列出最后一次運(yùn)行的容器,包括正在運(yùn)行和已經(jīng)停止的。
可以看出有三種方式可唯一指代一個(gè)容器:長(zhǎng)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)建長(zhǎ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ì)被放到后臺(tái)運(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)程有兩種類型:后臺(tái)任務(wù)和交互式任務(wù)。
后臺(tái)任務(wù)的例子:
docker exec -d 容器名 touch /etc/new_config_file
-d 表示需要運(yùn)行一個(gè)后臺(tái)進(jìn)程。之后是指定運(yùn)行的容器和執(zhí)行的命令。本例中新建了一個(gè)空文件。
交互任務(wù)的例子:
docker exec -t -i 容器名 /bin/bash
停止守護(hù)式容器
docker stop 容器名
docker stop 命令會(huì)向Docker容器進(jìn)程發(fā)送SIGTERM信號(hào)。如果想快速停止某個(gè)容器,可以使用docker kill命令向容器進(jìn)程發(fā)送SIGKILL信號(hào)。
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)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!