用systemd启动Docker后台程序

许多Linux发行版使用systemd启动Docker后台程序。 本文档讲述了一些有关如何自定义Docker设置的示例。

启动Docker后台程序

手动启动

安装Docker之后,您需要启动Docker后台程序。 大多数Linux发行版都使用systemctl启动服务。 如果您没有systemctl,请使用service命令。

  • systemctl:

    $ sudo systemctl start docker
    
  • service:

    $ sudo service docker start
    

系统启动时自动启动

如果希望Docker在开机时启动,请参阅配置Docker在开机时启动

自定义Docker后台程序选项

有多种方法可以配置Docker后台程序标志和环境变量。 推荐的方法是使用平台无关的daemon.json文件,默认情况下该文件位于Linux上的/etc/docker/中。 请参阅[后台程序配置文件](/docker/docker-guides/daemon-configuration-file)。

您可以使用daemon.json配置几乎所有的后台程序配置选项。 以下示例配置了两个选项。 您无法使用daemon.json机制进行配置的一件事是HTTP代理。

运行时目录和存储驱动程序

您可能需想要控制用于Docker镜像,容器和卷的磁盘空间,通过将其移动到单独的分区。

为此,请在daemon.json文件中设置以下标志:

{
    "data-root": "/mnt/docker-data",
    "storage-driver": "overlay2"
}

HTTP/HTTPS代理

Docker后台程序在其启动环境中的环境变量:HTTP_PROXYHTTPS_PROXYNO_PROXY来配置HTTP或HTTPS代理行为。 您不能使用daemon.json文件配置这些环境变量。

本示例覆盖默认的docker.service文件。

如果在您的公司配置中,您位于HTTP或HTTPS代理服务器后面,则需要在Docker systemd服务文件中添加此配置。

  1. 为docker服务创建一个systemd插入目录:
$ sudo mkdir -p /etc/systemd/system/docker.service.d
  1. 创建一个名为/etc/systemd/system/docker.service.d/http-proxy.conf的文件,添加HTTP_PROXY环境变量:
[Service]
Environment="HTTP_PROXY=http://proxy.example.com:80/"

或者,如果您在HTTPS代理服务器后面,则创建一个名为/etc/systemd/system/docker.service.d/https-proxy.conf的文件,在其中添加HTTPS_PROXY环境变量:

[Service]
Environment="HTTPS_PROXY=https://proxy.example.com:443/"
  1. 如果您有不需要代理的内部Docker注册中心,则可以通过NO_PROXY环境变量来指定它。

NO_PROXY变量指定一个字符串,该字符串包含用逗号分隔的应从代理中排除的主机值。您可以指定以下选项来排除主机:

  • IP地址前缀 (1.2.3.4)
  • 域名或特殊的DNS标签(*)
  • 名称和所有子域都匹配的域名。以“.”开头的仅匹配子域的域名。 例如, foo.example.comexample.com:
    • example.com 匹配 example.comfoo.example.com, 以及
    • .example.com仅匹配foo.example.com
  • 单个星号(*)表示不应进行代理
  • IP地址前缀(1.2.3.4:80)和域名(foo.example.com:80)接受文字端口号

配置示例:

[Service]    
Environment="HTTP_PROXY=http://proxy.example.com:80/" "NO_PROXY=localhost,127.0.0.1,docker-registry.example.com,.corp"

或者,如果您位于HTTPS代理服务器后面:

[Service]    
Environment="HTTPS_PROXY=https://proxy.example.com:443/" "NO_PROXY=localhost,127.0.0.1,docker-registry.example.com,.corp"
  1. 刷新更改,使其生效:
$ sudo systemctl daemon-reload
  1. 重新启动Docker:
$ sudo systemctl restart docker
  1. 验证配置是否已加载:
$ systemctl show --property=Environment docker
Environment=HTTP_PROXY=http://proxy.example.com:80/

或者,如果您位于HTTPS代理服务器后面:

$ systemctl show --property=Environment docker
Environment=HTTPS_PROXY=https://proxy.example.com:443/

配置Docker后台程序在什么地方侦听连接

查看配置Docker后台程序在什么地方侦听连接.

手动创建systemd单元文件

当安装的二进制文件不带软件包时,您可能希望将Docker与systemd集成。 为此,请从github存储库安装两个单元文件(servicesocket)。到/etc/systemd/system