Docker Systemd | docker daemon.json配置 22
Docker Systemd 简介
systemd 用于管理许多 Linux 发行版中的 Docker 守护进程。我们可以启动 Docker 守护进程,以便它可以在启动时自动启动,或者使用 systemd 检查它的状态。在大多数 Linux 发行版中,我们使用“systemctl”命令来管理服务,同样,我们也可以使用它来管理 Docker 守护程序,但是,如果 systemctl 不可用,我们也可以使用“service”命令来执行此操作. 简而言之,我们可以使用 systemd 来控制和管理 Docker 守护进程。
语法:
sudo systemctl <command> docker
命令:
- start:用于启动docker服务
- stop:用于停止docker服务
- status:用于查看docker服务的状态
- enable:用于配置docker服务在开机时启动
- disable:它阻止 docker 服务在启动时启动。
- restart:用于重启docker服务
- show:用于显示systemd文件中定义的环境变量。
sudo systemctl status docker
说明:在上面的快照中,我们可以看到 docker 服务正在运行并且已启用。
docker daemon.json配置
我们可以通过不同的方式为我们的 Docker 守护进程配置守护进程标志和环境变量,推荐使用使用“daemon.json”文件配置守护进程标志和环境变量。这个文件的默认路径是’/etc/docker’,当我们安装Docker时它不存在。当我们第一次配置守护进程标志或环境变量时,我们必须创建这个文件。在对“daemon.json”文件进行更改后,我们需要重新启动 Docker 服务以强制执行更改。
几乎所有守护进程配置选项都可以使用 ‘daemon.json’ 进行配置,但是,我们不能使用 ‘daemon.json’ 配置 ‘HTTP proxy’ 选项。如需配置我们需要为 docker 服务创建一个 systemd drop-in目录,并在其中创建一个配置文件。它覆盖默认的 docker.service 文件。
例子
让我们通过以下示例了解如何配置 Docker 守护进程标志或环境变量:
场景 1:将默认日志驱动程序更改为 json-file 并将运行时目录更改为“/mnt/docker-data”
1. 让我们通过运行“docker info”命令来检查 Docker 守护进程的当前配置,如下所示:
docker info
2. 现在,编辑 ‘daemon.json’ 文件,如果不存在则创建它,如下所示: –
sudo vi /etc/docker/daemon.json
3. 我们必须使用 systemctl 命令重新启动 Docker 服务以应用新配置,如下所示: –
sudo systemctl restart docker
注意:如果 ‘daemon.json’ 文件不正确或丢失某些内容,您将在重新启动 docker daemon 时在快照中收到如下所示的错误,因此请重新检查 ‘daemon.json’ 文件并重新启动服务。
说明:在上面的快照中,我们可以看到它在第一次尝试时遇到了错误,因此重新检查 ‘daemon.json’ 是否有任何错误并修复它,然后再次重新启动服务,没有任何错误。
提示:更改文件后等待 1-2 分钟,然后重新启动服务。
4. 让我们再次运行“docker info”命令来验证更改:
docker info
场景 2:通过覆盖 Docker.Service 文件配置 HTTP/HTTPS 代理
我们有两种配置方式,一种是常规安装,另一种是无根模式。以下步骤用于在常规安装中配置 HTTP/HTTPS 代理: –
1. 首先,我们需要使用以下命令为 docker 服务创建一个 systemd drop-in目录:
sudo mkdir -p /etc/systemd/system/docker.service.d
2. 现在,在上面的目录中创建一个名为 http-proxy.conf 的文件并设置 HTTP 或 HTTPS 代理,我们可以在同一个文件中设置,如下所示: –
sudo vi /etc/systemd/system/docker.service.d/http-proxy.conf
3. 保存文件并退出。
4. 我们需要重新加载守护进程,因为我们已经创建了一个新的 systemd 文件并重新启动 docker 服务以应用这个新配置,如下所示: –
sudo systemctl daemon-reload
sudo systemctl restart docker
5. 我们可以使用下面的命令来验证配置是否已经加载并且和预期的一样: –
sudo systemctl show --property=Environment docker
好处
- 这是控制 Docker 服务的一种简单方法。
- 我们可以配置守护进程标志和环境变量。
- 我们可以更改 Docker 守护程序的默认配置,例如日志驱动程序、存储驱动程序等。
规则与监管
- 如果我们已经在守护进程启动时设置了守护进程标志,那么我们不能在 ‘daemon.json’ 文件中设置它。例如,如果我们的 Docker 主机使用 systemd 来启动 Docker 守护进程,那么 ‘-H’ 标志已经设置,所以我们不能使用 ‘daemon.json’ 文件中的 hosts 键来添加监听地址。
- 如果 Docker 在无根模式下运行,那么我们需要在每个用户的主目录中创建“docker.service.d”文件夹来配置 HTTP/HTTPS 代理,因为它使用存储在每个用户目录中的文件。所以,文件夹路径是’~/.config/systemd/user/docker.service.d’,其他步骤同场景2。
- 我们可以使用环境变量“NO_PROXY”在配置 HTTP/HTTPS 代理时从代理中排除任何主机。例如,我们可以排除内部 Docker 仓库。
Environment="NO_PROXY=localhost,127.0.0.1,docker-registry.example.com,.corp"
4. ‘NO_PROXY’ 选项排除所有匹配的域名,例如,如果我们提到了 ‘abc.com’ 那么它将排除 ‘abc.com’, ‘x.abc.com’, ‘y .abc.com’ 等等,但是,如果我们提到了 ‘.abc.com’,那么它将排除除 ‘abc.com’ 之外的所有 ‘*.abc.com’。
5. 我们在 ‘daemon.json’ 中有可选的归档 ‘features’ 来启用或禁用特定的守护程序功能。例如,我们可以启用或禁用“buildkit”功能来设置默认的 docker 镜像构建器。
结论 – Docker Systemd
我们可以使用 systemd 来控制和管理 Docker 守护进程的几乎所有配置设置。如果我们必须安装没有包的二进制文件,那么我们需要从 Github 存储库中安装两个单元文件“service 和 socket”到“/etc/systemd/system”以将 Docker 与 systemd 集成。
推荐文章
这是 Docker Systemd 的指南。在这里,我们通过示例讨论简介,docker daemon.json配置
本文是docker快速入门教程系列的一部分您也可以查看以了解更多信息 –
常见问题FAQ
- 程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
- 请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!