许多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_PROXY
,HTTPS_PROXY
和NO_PROXY
来配置HTTP或HTTPS代理行为。 您不能使用daemon.json
文件配置这些环境变量。
本示例覆盖默认的docker.service
文件。
如果在您的公司配置中,您位于HTTP或HTTPS代理服务器后面,则需要在Docker systemd服务文件中添加此配置。
- 为docker服务创建一个systemd插入目录:
$ sudo mkdir -p /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/"
或者,如果您在HTTPS代理服务器后面,则创建一个名为/etc/systemd/system/docker.service.d/https-proxy.conf
的文件,在其中添加HTTPS_PROXY
环境变量:
[Service]
Environment="HTTPS_PROXY=https://proxy.example.com:443/"
- 如果您有不需要代理的内部Docker注册中心,则可以通过
NO_PROXY
环境变量来指定它。
NO_PROXY
变量指定一个字符串,该字符串包含用逗号分隔的应从代理中排除的主机值。您可以指定以下选项来排除主机:
- IP地址前缀 (
1.2.3.4
) - 域名或特殊的DNS标签(
*
) - 名称和所有子域都匹配的域名。以“.”开头的仅匹配子域的域名。 例如,
foo.example.com
和example.com
:example.com
匹配example.com
和foo.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"
- 刷新更改,使其生效:
$ sudo systemctl daemon-reload
- 重新启动Docker:
$ sudo systemctl restart docker
- 验证配置是否已加载:
$ 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后台程序在什么地方侦听连接
手动创建systemd单元文件
当安装的二进制文件不带软件包时,您可能希望将Docker与systemd集成。 为此,请从github存储库安装两个单元文件(service
和socket
)。到/etc/systemd/system
。