您好,登錄后才能下訂單哦!
本篇內容介紹了“如何查看Docker容器日志”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
驗證Docker正常啟動
使用docker info 命令,返回所有容器和鏡像的數量、docker版本、使用的執行驅動和存儲驅動以及Docker的基本配置等。之前說過Docker是基于client-server架構,它有一個docker程序,既能做客戶端又能做服務器端。作為客戶端時,docker程序向Docker守護進程發送請求,然后再對返回的請求結果進行處理。
運行第一個容器
可使用docker run 命令創建容器。它提供了容器的創建到啟動功能。運行
docker run -i -t ubuntu /bin/bash
參數 -i 保證容器中STDIN是開啟的;
參數-t告訴Docker為要創建的容器分配一個偽tty終端。這樣新建的容器才能提供一個交互式shell;
接下來告訴Docker基于什么鏡像來創建容器,上例使用的是ubuntu鏡像,它是一個基礎鏡像,由Docker公司提供,保存在Docker Hub Registry上。
最后告訴Docker在新容器中要運行什么命令,本例中在容器中運行/bin/bash命令啟動了一個Bash shell。
運行命令后Docker會檢查本地是否存在ubuntu鏡像,如果沒有就會連接Docker Hub Registry查看是否有該鏡像,一旦找到就會下載并保存到本地宿主機中。
隨后Docker在文件系統內部用這個鏡像創建了一個新容器。它擁有自己的IP地址,以及一個用來和宿主機進行通信的橋接網絡接口。
當容器創建完畢之后,Docker會執行容器中的/bin/bash命令,這時就可以看到容器內的shell了。
使用第一個容器
通過啟動我們以root用戶登錄到了新容器紅。這是一個完整的ubuntu系統。
輸入exit就可以從容器返回到宿主機的命令行了。同時容器也停止運行。但是容器仍然是存在的。可以使用docker ps -a 命令查看當前系統中的容器列表。
docker ps命令只顯示正在運行的容器,添加-a參數列出所有容器。-l 參數列出最后一次運行的容器,包括正在運行和已經停止的。
可以看出有三種方式可唯一指代一個容器:長UUID、短UUID和名稱。
容器命名
之前創建容器時Docker自動生成了一個隨機名稱。如果創建容器時想指定名稱可以使用--name參數。
docker run --name ivan_container -i -t ubuntu /bin/bash
一個合法的容器名稱只能包含以下字符:小寫字母、大寫字母、數字、下劃線、圓點、橫線。
容器的命名是唯一的
docker rm 容器名 可以刪除容器。
重新啟動已停止的容器
docker start 容器名 docker start 容器ID
附著在容器上
Docker容器重新啟動時,會沿用docker run 命令時指定的參數來運行,因此容器重新啟動后會運行一個交互式會話shell。
可以用“docker attach 容器名/容器ID“命令重新附著到該容器的會話上。運行完命令后需要按下回車進入該會話。
創建守護式容器
除了上面創建的交互式運行的容器,也可以創建長期運行的守護式容器。它沒有交互式會話,非常適合運行應用程序和服務。大多數時候都需要以守護式來運行容器。
docker run --name daemon_dave -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1 done"
在docker run上使用參數-d,容器會被放到后臺運行。
查看容器日志
docker logs 容器名
-f 參數監控容器實時日志
docker logs -f 容器名
用Ctrl + C退出日志監控。
--tail 行數 獲取最后幾行日志
docker logs --tail 10 容器名
使用
docker logs --tail 0 -f 容器名
監控某個容器的最新日志而不必讀取整個日志文件。
使用 -t 參數為每條日志項加上時間戳。
docker logs -ft 容器名
查看容器內的進程
docker top 容器名
在容器內部運行進程
在Docker 1.3之后,可以通過docker exec命令在容器被額外啟動新進程。可以在容器內運行的進程有兩種類型:后臺任務和交互式任務。
后臺任務的例子:
docker exec -d 容器名 touch /etc/new_config_file
-d 表示需要運行一個后臺進程。之后是指定運行的容器和執行的命令。本例中新建了一個空文件。
交互任務的例子:
docker exec -t -i 容器名 /bin/bash
停止守護式容器
docker stop 容器名
docker stop 命令會向Docker容器進程發送SIGTERM信號。如果想快速停止某個容器,可以使用docker kill命令向容器進程發送SIGKILL信號。
docker ps -n x 命令會顯示最后x個容器,不論容器正在運行還是已經停止。
自動重啟容器
創建容器時可以通過--restart參數讓Docker自動重新啟動該容器。--restart標志會檢查容器的退出代碼,并據此來決定是否要重啟容器。
docker run --restrart=always --name daemon_dave -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"
--restart標志被設置為always,無論容器的退出代碼是什么,Docker都會自動重啟該容器。除了always,還可以設置為on-failure,這樣只有當容器的退出代碼為非0值得時候,才會自動重啟。另外on-failure還接收一個可選的重啟次數參數:
--restart=on-failure:5
這樣當容器退出代碼非0時,Docker會嘗試自動重啟該容器,最后重啟5次。
--restart是1.2.0版本引入的。
詳細的容器信息
docker inspect 容器名
查看容器的詳細信息。使用-f --format來選定要查看的內容:
docker inspect --format='{{.State.Running}}' 容器名
查看容器的運行狀態。
docker inspect --format '{{.NetworkSettings.IPAddress}}' 容器1 /容器2
查看容器的IP地址,可以同時制定多個容器,如上例所示。
--format -f支持完整的Go語言模板。
還可以瀏覽/var/lib/docker目錄來深入了解Docker的工作原理。該目錄存放著Docker鏡像、容器以及容器的配置。所有的容器都保存在/var/lib/docker/containers目錄下。
刪除容器
使用docker rm刪除容器。
運行中的docker容器是無法刪除的。必須先通過docker stop或docker kill 命令停止容器,才能將其刪除。
目前沒有辦法一次刪除所有容器,不過可以通過小技巧來刪除:
docker rm 'docker ps -a -q'
-a 表示列出所有容器,-q表示只需要返回容器的ID不返回其他信息。
“如何查看Docker容器日志”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。