?
本文檔使用 php中文網(wǎng)手冊 發(fā)布
在成功安裝 Docker 并啟動 Docker 之后,dockerd
守護進程將以其默認配置運行。本主題將介紹如何自定義配置,手動啟動守護程序以及如果遇到問題時對守護程序進行故障排除和調(diào)試。
啟動 Docker 的命令取決于您的操作系統(tǒng)。檢查安裝 Docker 下的正確頁面。要將 Docker 配置為在系統(tǒng)引導(dǎo)時自動啟動,請參閱將 Docker 配置為在引導(dǎo)時啟動。
通常,您使用操作系統(tǒng)實用程序啟動 Docker。出于調(diào)試目的,您可以使用該dockerd
命令手動啟動 Docker 。您可能需要使用sudo
,具體取決于您的操作系統(tǒng)配置。當您以這種方式啟動 Docker 時,它會在前臺運行,并將其日志直接發(fā)送到您的終端。
$ dockerd INFO[0000] +job init_networkdriver()INFO[0000] +job serveapi(unix:///var/run/docker.sock)INFO[0000] Listening for HTTP on unix (/var/run/docker.sock)......
要在您手動啟動 Docker 時停止 Docker,請在您的終端中發(fā)出一個Ctrl+C
。
守護進程(daemon)包含許多配置選項,您可以在手動啟動 Docker 時將其作為標志傳遞,或者在daemon.json
配置文件中進行設(shè)置。推薦使用第二種方法,因為重新啟動 Docker 時,這些配置更改仍然存在。
請參閱 dockerd 以獲取完整的配置選項列表。
以下是使用一些配置選項手動啟動 Docker 守護程序(daemon)的示例:
$ dockerd -D --tls=true --tlscert=/var/docker/server.pem --tlskey=/var/docker/serverkey.pem -H tcp://192.168.59.3:2376
此命令啟用 debugging(-D
),啟用 TLS(-tls
),指定服務(wù)器證書和密鑰(--tlscert
和--tlskey
),并指定守護程序偵聽連接的網(wǎng)絡(luò)接口(-H
)。
更好的方法是將這些選項放入daemon.json
文件并重新啟動 Docker。此方法適用于每個 Docker 平臺。以下daemon.json
示例設(shè)置與上述命令相同的所有選項:
{ "debug": true, "tls": true, "tlscert": "/var/docker/server.pem", "tlskey": "/var/docker/serverkey.pem", "hosts": ["tcp://192.168.59.3:2376"]}
Docker 文檔中會討論許多特定的配置選項。接下來的一些地方包括:
自動啟動容器
限制容器的資源
配置存儲驅(qū)動程序
容器安全
您可以在守護進程上啟用調(diào)試,以了解守護進程的運行時活動并幫助進行故障排除。如果守護進程完全沒有響應(yīng),您還可以通過向 Docker 守護進程(daemon)發(fā)送SIGUSR
信號來強制將所有線程的完整堆棧跟蹤添加到守護進程日志中。
如果您的容器嘗試使用比系統(tǒng)可用的內(nèi)存更多的內(nèi)存,則可能會遇到內(nèi)存異常(OOME),并且容器或 Docker 守護程序(daemon)可能會被內(nèi)核 OOM 切斷器所切斷。要防止發(fā)生這種情況,請確保您的應(yīng)用程序在具有足夠內(nèi)存的主機上運行,并且請參閱了解耗盡內(nèi)存的風(fēng)險。
守護進程(daemon)日志可以幫助您診斷問題。根據(jù)操作系統(tǒng)配置和使用的日志記錄子系統(tǒng),日志可以保存在幾個位置之一中:
操作系統(tǒng) | 位置 |
---|---|
RHEL, Oracle Linux | /var/log/messages |
Debian | /var/log/daemon.log |
Ubuntu 16.04+, CentOS | Use the command journalctl -u docker.service |
Ubuntu 14.10- | /var/log/upstart/docker.log |
macOS | ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/console-ring |
Windows | AppData\Local |
有兩種方法來啟用調(diào)試。推薦的方法是將debug
密鑰設(shè)置true
在daemon.json
文件中。此方法適用于每個 Docker 平臺。
1. 編輯daemon.json
通常位于/etc/docker/
的文件。如果該文件尚不存在,您可能需要創(chuàng)建該文件。在 macOS 或 Windows 上,請勿直接編輯文件。相反,請轉(zhuǎn)到首選項 / 守護進程 / 高級。
2. 如果文件為空,請?zhí)砑右韵聝?nèi)容:
{ "debug": true }
如果該文件已經(jīng)包含 JSON,只需添加該鍵"debug": true
,如果它不是結(jié)束括號之前的最后一行,請注意在該行的末尾添加逗號。同時驗證是否log-level
已設(shè)置密鑰,將其設(shè)置為info
或debug
。info
是默認的,和可能的值是debug
,info
,warn
,error
,fatal
。
3. HUP
向守護程序發(fā)送信號以使其重新加載其配置。在 Linux 主機上,使用以下命令。
$ sudo kill -SIGHUP $(pidof dockerd)
在 Windows 主機上,重新啟動 Docker。您可以停止 Docker 守護進程并使用該-D
標志手動重新啟動它。但是,這可能會導(dǎo)致 Docker 以與主機的啟動腳本創(chuàng)建的環(huán)境不同的環(huán)境重新啟動,并且這可能會使調(diào)試更加困難。強制要記錄的堆棧跟蹤如果守護進程沒有響應(yīng),可以強制執(zhí)行完整的堆棧跟蹤通過向SIGUSR1
守護進程發(fā)送信號進行記錄。
Linux:
$ sudo kill -SIGUSR1 $(pidof dockerd)
Windows 服務(wù)器:
下載 docker-signal。
用--pid=<PID of daemon>
標志運行可執(zhí)行文件。
這將強制堆棧跟蹤被記錄,但不會停止守護進程(Daemon)。如果守護進程日志記錄到文件中,它將顯示堆棧跟蹤或包含堆棧跟蹤的文件的路徑。
守護進程(Daemon)將在處理完SIGUSR1
信號并將堆棧跟蹤轉(zhuǎn)儲到日志后繼續(xù)運行。堆棧跟蹤可用于確定守護進程內(nèi)所有 goroutine 和線程的狀態(tài)。
檢查 Docker 是否運行的操作系統(tǒng)無關(guān)的方法是使用該docker info
命令詢問 Docker 。
您還可以使用操作系統(tǒng)實用程序(例如sudo systemctl is-active docker
或sudo status docker
或sudo service docker status
),或者使用 Windows 實用程序檢查服務(wù)狀態(tài)。
最后,您可以dockerd
使用類似于ps
或top
的命令檢入進程的進程列表。