3.4.7、使用 systemd 管理配置 Docker

使用 systemd 管理配置 Docker

現在,很多Linux的發行版本使用systemd去啓動Docker後臺。這份文檔演示幾個如何定製自己的Docker設置的例子。

啓動Docker 後臺

當Docker 安裝完成後,你將需要啓動Docker後臺。

$ sudo systemctl start docker
# 在一些老的發行版本下,你可能需要使用如下命令
$ sudo service docker start

如果你需要Docker自動啓動,你也可以:

$ sudo systemctl enable docker
# 在一些老的發行版本下,你可能需要使用如下命令
$ sudo chkconfig docker on

自定義Docker 後臺設置

這裏通過多種方法去配置你的Docker後臺的標誌和環境變量。

如果 docker.service 文件設置使用一個EnvironmentFile (通常路勁是/etc/sysconfig/docker) ,你可以修改引用的配置文件。

檢查 docker.service 是否使用一個EnvironmentFile

$ sudo systemctl show docker | grep EnvironmentFile
EnvironmentFile=-/etc/sysconfig/docker (ignore_errors=yes)

或者,先查找出被加載的服務文件的路徑,然後查找屬性:

$ sudo systemctl status docker | grep Loaded
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled)
$ sudo grep EnvironmentFile /usr/lib/systemd/system/docker.service
EnvironmentFile=-/etc/sysconfig/docker

你可以使用覆蓋文件,自定義Docker後臺設置,如後面的HTTP Proxy 例子。文件的路徑在/usr/lib/systemd/system 或 /lib/systemd/system ,並且包含包含一些不能修改的默認配置。

運行時目錄和存儲驅動

你可能想通過隔離的分區去管理用於Docker鏡像、容器和數據卷的磁盤空間。

在這個例子中,我們假設你的 docker.service 文件的一些設置已經類似如下:

[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network.target docker.socket
Requires=docker.socket

[Service]
Type=notify
EnvironmentFile=-/etc/sysconfig/docker
ExecStart=/usr/bin/docker -d -H fd:// $OPTIONS
LimitNOFILE=1048576
LimitNPROC=1048576

[Install]
Also=docker.socket

這將允許我們通過設置 /etc/sysconfig/docker 文件中的 OPTIONS 參數來添加額外的配置標誌:

OPTIONS="--graph /mnt/docker-data --storage-driver btrfs"

你還可以在這個文件裏設置其他的環境變量,例如,下面將要介紹的HTTP_PROXY 環境變量。

HTTP proxy(HTTP 代理)

這個例子將會覆蓋默認的 docker.service 文件。.

假設你的服務架設在一個HTTP代理服務之後,例如,在企業配置環境中,你可能需要在Docker systemd服務文件中增加一個這樣的配置。

首先,爲docker 服務創建一個systemd 插入目錄:

mkdir /etc/systemd/system/docker.service.d

現在創建一個名字爲 /etc/systemd/system/docker.service.d/http-proxy.conf 的文件,然後添加HTTP_PROXY 環境變量:

[Service]
Environment="HTTP_PROXY=http://proxy.example.com:80/"

如果你不想內部Docker registries 經過代理,你可以通過NO_PROXY 變量配置它們:

Environment="HTTP_PROXY=http://proxy.example.com:80/" "NO_PROXY=localhost,127.0.0.0/8,docker-registry.somecorporation.com"

刷新更改:

$ sudo systemctl daemon-reload

驗證配置是否生效:

$ sudo systemctl show docker --property Environment
Environment=HTTP_PROXY=http://proxy.example.com:80/

重啓 Docker:

$ sudo systemctl restart docker

手動創建systemd unit 文件

當你通過二進制方式安裝時,你可能需要通過systemd來整合Docker。爲此,簡單的安裝兩個unit文件(service 和 socket)到 /etc/systemd/system這裏可以獲取到這兩個文件

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