在不同系統上配置運行Docker
成功安裝Docker之後,docker
後臺將會以默認的配置運行。
在一個生產環境裏,系統管理員通常會根據公司(或組織)的具體要求來配置docker
後臺的啓動和停止。在大多數境況下,系統管理員會安裝一個進程管理器,例如,SysVinit
,Upstart
或 systemd
去管理 docker
後臺的啓動和關閉。
直接運行 Docker 後臺
docker
後臺可以使用 -d
參數直接運行。默認情況下,它會在 unix:///var/run/docker.sock
上監聽:
$ docker daemon
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 daemon
來替代進程管理器去直接運行docker
後臺,你可以在docker
後面追加配置選項直接運行命令。其他的選項會被傳遞到docker
後臺去配置它。
一些後臺的配置選項:
標誌 | 描述 |
---|---|
-D , --debug=false |
允許或禁止debug模式。默認是false。 |
-H ,--host=[] |
連接的後臺 socket(s) |
--tls=false |
允許或禁止 TLS。默認false。 |
這裏有一個使用配置選型運行docker
後臺的例子:
$ docker daemon -D --tls=true --tlscert=/var/docker/server.pem --tlskey=/var/docker/serverkey.pem -H tcp://192.168.59.3:2376
這些選型:
- 允許
-D
(debug) 模式。 - 設置
tls
的值爲true,使用--tlscert
和--tlskey
分別指定服務證書和密匙。 - 監聽連接在
tcp://192.168.59.3:2376
上。
完整的命令行介紹,請參考這裏。
Ubuntu(烏班圖)
自14.04
起,Ubuntu使用Upstart
作爲它的進程管理器。默認情況下,Upstart
的工作路徑在 /etc/init
,docker
Upstart
job會在查找t/etc/init/docker.conf
。
在Ubuntu上成功安裝完 Docker 之後,你可以使用Upstart
去檢查Docker的運行狀態:
$ sudo status docker
docker start/running, process 989
運行 Docker
你可以使用如下命令去啓動/停止/重啓docker
後臺:
$ sudo start docker // 啓動
$ sudo stop docker // 停止
$ sudo restart docker // 重啓
配置 Docker
你可以通過修改 /etc/default/docker
文件中的DOCKER_OPTS
變量來配置你的docker
後臺。
去配置 Docker 選項:
-
使用一個擁有
sudo
或root
權限的用戶登錄到主機。 -
如果你的主機上沒有
/etc/default/docker
文件,先創建它。這取決於你是如何安裝Docker,可能你已經擁有這個文件了。 -
使用你喜歡的編輯器打開這個文件。
$ sudo vi /etc/default/docker
-
在文件最後面添加一個
DOCKER_OPTS
變量(或者修改)。這些選項會被追加到docker
後臺命令之後。
DOCKER_OPTS="-D --tls=true --tlscert=/var/docker/server.pem --tlskey=/var/docker/serverkey.pem -H tcp://192.168.59.3:2376"
這些選項:
- 允許
-D
(debug) 模式 - 設置
tls
的值爲true,使用--tlscert
和--tlskey
分別指定服務證書和密匙。 - 監聽連接在
tcp://192.168.59.3:2376
上。
完整的命令行介紹,請參考這裏。
-
保存並關閉文件。
-
重啓
docker
後臺。$ sudo restart docker
-
驗證
docker
後臺運行的詳情,可以使用ps
命令。$ ps aux | grep docker | grep -v grep
Logs(日誌)
Upstart
默認日誌路徑是 /var/log/upstart
,docker
後臺的日誌路在 /var/log/upstart/docker.log
$ tail -f /var/log/upstart/docker.log
INFO[0000] Loading containers: done.
INFO[0000] docker daemon: 1.6.0 4749651; execdriver: native-0.2; graphdriver: aufs
INFO[0000] +job acceptconnections()
INFO[0000] -job acceptconnections() = OK (0)
INFO[0000] Daemon has completed initialization
CentOS / Red Hat Enterprise Linux / Fedora
自 7.x
起,CentOS 和RHEL 使用systemd
作爲默認的進程管理器。而Fedora,自 21
版本也使用 systemd
作爲它的進程管理器。
在CentOS/Red Hat Enterprise Linux/Fedora上成功安裝完 Docker 之後, 你可以使用如下方法檢查Docker的運行狀態:
$ sudo systemctl status docker
運行 Docker
你可以使用如下命令去啓動/停止/重啓 docker
後臺:
$ sudo systemctl start docker
$ sudo systemctl stop docker
$ sudo systemctl restart docker
如果你需要Docker自動啓動,你可以這樣:
$ sudo systemctl enable docker
配置 Docker
你可以通修改 /etc/sysconfig/docker
文件中的 other_args
變量來配置 docker
後臺。在 CentOS
7.x 和RHEL 7.x中,變量的名字是 OPTIONS
但是,在CentOS
6.x 和RHEL 6.x,叫 other_args
。在這樣小節裏,我們將使用CentOS
7.x 作爲配置例子來演示 docker
後臺的配置。
默認情況下,systemd服務會存放在/etc/systemd/service
,/lib/systemd/system
或 /usr/lib/systemd/system
裏。根據你的系統你可以在上述的三個目錄下找到 docker.service
文件。
配置Docker後臺選項:
-
使用一個擁有
sudo
或root
權限的用戶登錄到主機。 -
如果你的主機上沒有
/etc/default/docker
文件,先創建它。這取決於你是如何安裝Docker,可能你已經擁有這個文件了。 -
使用你喜歡的編輯器打開這個文件。
$ sudo vi /etc/sysconfig/docker
-
在文件最後面添加一個
DOCKER_OPTS
變量(或者修改)。這些選項會被追加到docker
後臺命令之後。
OPTIONS="-D --tls=true --tlscert=/var/docker/server.pem --tlskey=/var/docker/serverkey.pem -H tcp://192.168.59.3:2376"
這些選項:
- 允許
-D
(debug) 模式 - 設置
tls
的值爲true,使用--tlscert
和--tlskey
分別指定服務證書和密匙。 - 監聽連接在
tcp://192.168.59.3:2376
上。
完整的命令行介紹,請參考這裏。
-
保存並關閉文件。
-
重啓
docker
後臺。$ sudo service docker restart
-
驗證
docker
後臺運行的詳情,可以使用ps
命令。$ ps aux | grep docker | grep -v grep
Logs(日誌)
systemd擁有屬於自己日誌系統,被稱爲“ journal”。docker
後臺的日誌可以使用journalctl
-u docker
指令去查看。
$ sudo journalctl -u docker
May 06 00:22:05 localhost.localdomain systemd[1]: Starting Docker Application Container Engine...
May 06 00:22:05 localhost.localdomain docker[2495]: time="2015-05-06T00:22:05Z" level="info" msg="+job serveapi(unix:///var/run/docker.sock)"
May 06 00:22:05 localhost.localdomain docker[2495]: time="2015-05-06T00:22:05Z" level="info" msg="Listening for HTTP on unix (/var/run/docker.sock)"
May 06 00:22:06 localhost.localdomain docker[2495]: time="2015-05-06T00:22:06Z" level="info" msg="+job init_networkdriver()"
May 06 00:22:06 localhost.localdomain docker[2495]: time="2015-05-06T00:22:06Z" level="info" msg="-job init_networkdriver() = OK (0)"
May 06 00:22:06 localhost.localdomain docker[2495]: time="2015-05-06T00:22:06Z" level="info" msg="Loading containers: start."
May 06 00:22:06 localhost.localdomain docker[2495]: time="2015-05-06T00:22:06Z" level="info" msg="Loading containers: done."
May 06 00:22:06 localhost.localdomain docker[2495]: time="2015-05-06T00:22:06Z" level="info" msg="docker daemon: 1.5.0-dev fc0329b/1.5.0; execdriver: native-0.2; graphdriver: devicemapper"
May 06 00:22:06 localhost.localdomain docker[2495]: time="2015-05-06T00:22:06Z" level="info" msg="+job acceptconnections()"
May 06 00:22:06 localhost.localdomain docker[2495]: time="2015-05-06T00:22:06Z" level="info" msg="-job acceptconnections() = OK (0)"
注意:使用和配置journal是一個高級話題,已經超出本章節覆蓋的範圍。