使用Systemd配置和控制Docker

许多Linux资源管理程序(Linux distributions)使用systemd启动Docker daemon。这篇文章介绍一些怎样自定义Docker设置。

启动Docker daemon

一旦Docker安装,你将需要启动Docker daemon。

  1. $ sudo systemctl start docker
  2. # or on older distributions, you may need to use
  3. $ sudo service docker start

如果你想在boot时就启动docker,你也可以:

  1. $ sudo systemctl enable docker
  2. # or on older distributions, you may need to use
  3. $ sudo chkconfig docker on

自定义Docker daemon参数

有许多配置daemon flags和环境变量的方法。如果docker.service文件是被用来设置EnvironmentFile(通常指向/etc/sysconfig/docker)的,你可以修改这个指定的文件。

或者,你可能需要编辑docker.service文件,在/usr/lib/systemd/system或者/etc/systemd/service。

运行时目录和存储驱动

你可能想控制Docker 镜像,容器,数据卷的磁盘空间,通过移动它到一个分离的地方。

在本次示例中,我们将假设你的docker.service文件长得像这个样子:

  1. [Unit]Description=Docker Application Container
  2. EngineDocumentation=http://docs.docker.com
  3. After=network.target docker.socket
  4. Requires=docker.socket
  5. [Service]Type=notify
  6. EnvironmentFile=-/etc/sysconfig/docker
  7. ExecStart=/usr/bin/docker -d -H fd:// $OPTIONS
  8. LimitNOFILE=1048576
  9. LimitNPROC=1048576
  10. [Install]Also=docker.socket

这里将允许我们添加额外的标志在/etc/sysconfig/docker文件,通过设置OPTIONS:

OPTIONS=”—graph /mnt/docker-data —storage btrfs”

你也可以设置其它的环境变量在这个文件中,例如HTTP_PROXY 。

HTTP Proxy

这个例子继承默认的docker.service文件。

如果你后台运行HTTP proxy server,例如corporate 设置,你将需要添加这个的配置在你的docker systemd service文件中。

首先,创建一个systemd drop-in 目录。

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

创建一个文件叫做/etc/systemd/system/docker.service.d/http-proxy.conf,添加HTTP_PROXY 环境变量。

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

如果你有 internal Docker registries ,你需要用不用代理的链接,你可以指定它们通过NO_PROXY环境变量。

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

刷新修改

  1. $ sudo systemctl daemon-reload

重启Docker

  1. $ sudo systemctl restart docker

手动创建systemd unit files

当没有使用package安装binary ,你可能想使用systemd结合Docker 。为了能这样,简单安装两个unit files(service and socket)从the github repository 下载到你的/etc/systemd/system目录下。