3.4.3、在不同系統上配置運行Docker

在不同系統上配置運行Docker

成功安裝Docker之後,docker 後臺將會以默認的配置運行。

在一個生產環境裏,系統管理員通常會根據公司(或組織)的具體要求來配置docker 後臺的啓動和停止。在大多數境況下,系統管理員會安裝一個進程管理器,例如,SysVinitUpstart 或 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 選項:

  1. 使用一個擁有 sudo 或root 權限的用戶登錄到主機。

  2. 如果你的主機上沒有/etc/default/docker 文件,先創建它。這取決於你是如何安裝Docker,可能你已經擁有這個文件了。

  3. 使用你喜歡的編輯器打開這個文件。

    $ sudo vi /etc/default/docker
  4. 在文件最後面添加一個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 上。

完整的命令行介紹,請參考這裏

  1. 保存並關閉文件。

  2. 重啓 docker 後臺。

    $ sudo restart docker
    
  3. 驗證 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後臺選項:

  1. 使用一個擁有 sudo 或root 權限的用戶登錄到主機。

  2. 如果你的主機上沒有/etc/default/docker 文件,先創建它。這取決於你是如何安裝Docker,可能你已經擁有這個文件了。

  3. 使用你喜歡的編輯器打開這個文件。

    $ sudo vi /etc/sysconfig/docker
    
  4. 在文件最後面添加一個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 上。

完整的命令行介紹,請參考這裏

  1. 保存並關閉文件。

  2. 重啓 docker 後臺。

    $ sudo service docker restart 
  3. 驗證 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是一個高級話題,已經超出本章節覆蓋的範圍。

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章