【问题标题】:Docker configuration using the systemd configuration style使用 systemd 配置风格的 Docker 配置
【发布时间】:2015-12-15 23:22:18
【问题描述】:

我注意到 Docker 文档正在逐渐转向 systemd 的初始化和配置方法。我有点不确定在使用 systemd 配置方法时如何将“insecure-registry”条目添加到 Docker。

在使用 Docker 1.6.1 版时,我可以通过添加到文件中来添加多个不安全的注册表项:

/etc/sysconfig/docker

类似于以下的一行:

INSECURE_REGISTRY='--insecure-registry myregistry.companyx.com:5010 --insecure-registry myregistry.companyx.com:5011'

并使用以下命令重新启动 Docker:

sudo service docker restart

对于 Docker 1.8.2,我一直在寻找如何以“systemd”方式执行此操作。我最接近任何文档的是以下 2 页:

https://docs.docker.com/articles/systemd/
https://coreos.com/os/docs/latest/registry-authentication.html

以上都建议我需要将一个文件添加到一个名为:

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

这些页面中的第二个建议了一个名为:

/etc/systemd/system/docker.service.d/50-insecure-registry.conf

它还谈到了我根本没有遵循的“#cloud-config write_files: - path:”。

我忽略了我不理解的东西并创建了一个名为:

/etc/systemd/system/docker.service.d/50-insecure-registry.conf

包含以下内容:

[Service]
Environment='DOCKER_OPTS=--insecure-registry="myregistry.companyx.com:5010"'

并使用以下命令重新启动 docker:

sudo systemctl restart docker

结果让我觉得是时候回家了。我想添加多个不安全的注册表项,但还没有弄清楚如何做到这一点。而且我对单次参赛的成功还有很长的路要走。

STUFF added 2 days later

在页面的帮助下:

http://nknu.net/how-to-configure-docker-on-ubuntu-15-04/

我在使用放入目录中的文件配置 Docker 方面取得了一些进展:

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

我缺少的是一个覆盖默认值的条目:

[Service]
ExecStart=/usr/bin/docker -d -H fd://

我通过创建一个额外的文件来做到这一点,这个文件名为:

docker_systemd_workaround.conf

它包含:

[Service]
# workaround to include default options
ExecStart=
ExecStart=/usr/bin/docker -d -H fd:// $DOCKER_OPTS

这样,设置 DOCKER_OPTS 的另一个文件的内容不再被忽略。我认为这不是一个完整的解决方案,但它确实解决了我试图添加“不安全注册表”条目的问题。

【问题讨论】:

  • 感谢您。我在 ubuntu 上运行 docker(从 apt 安装),并且能够通过添加您指定的 50-insecure-registry.confdocker_systemd_workaround.conf 文件来连接到远程不安全注册表(尽管我在 docker_systemd_workaround.conf 中的第二个 ExecStart 读为:@ 987654340@)。添加这些文件后,我只运行了sudo systemctl daemon-reload,然后运行sudo service docker restart,并且能够通过运行docker info 来验证不安全的注册表是否存在。

标签: configuration docker config systemd


【解决方案1】:

我遇到了类似的问题,并且挣扎了很长时间,直到我找到了这个blog.

基本上遵循以下步骤:

sudo vi /etc/systemd/system/docker.service.d/docker.conf 和 添加以下内容:

[Service] 
#You need the below or you 'ExecStart=' or you will get and error 'Service has more than one ExecStart= setting, which is only allowed'
ExecStart= 
ExecStart=/usr/bin/docker daemon -H fd://
ExecStart=/usr/bin/docker daemon -H fd:// --insecure-registry youregistry.mydomain.com:5000

最后:

  • sudo systemctl daemon-reload
  • sudo systemctl restart docker

【讨论】:

  • 哎呀,修复了流浪换行符
【解决方案2】:

扩展了我的评论以提高可读性

问题

无法连接到远程不安全的存储库。无法在启动时将“insecure_repository”添加到 docker 选项。

Ubuntu 16.04 LTS

上使用通过包管理器安装的 docker

解决方案

1。验证 docker under 是否受 systemd 控制

$systemctl status docker 应该返回运行 docker 服务的详细信息。您可以在 Loaded:

下查看它使用的默认设置

2。添加不安全的存储库 systemd conf 文件

此文件将加载 DOCKER_OPTS 环境变量。

/etc/systemd/system/docker.service.d/insecure_repository.conf创建文件

添加文件内容:

[Service]
Environment='DOCKER_OPTS=--insecure-registry="myregistryserver.mydomain.com:5000"'

3。添加 docker systemd 解决方法配置文件

此文件将修改 ExecStart 以使用 DOCKER_OPTS 环境变量。

/etc/systemd/system/docker.service.d/docker-systemd-workaround.conf创建文件

添加文件内容:

[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H fd:// $DOCKER_OPTS

4。重新加载

$sudo systemctl daemon-reload

$sudo service docker restart

5。验证

$docker info 应在 Insecure Registries:

下包含 myregistryserver.mydomain.com:5000

$systemctl status docker 应该在 Drop-In: 标题下包含您的 systemd 配置(也称为插件)。您还应该在 CGroup: 标题下看到修改后的 ExecStart。

【讨论】:

  • 请注意,ExecStart 基于原始 Loaded: 文件,您可以通过运行 $systemctl status docker 查看 - 在我的安装中,该文件位于 /lib/systemd/system/docker.service
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-09
相关资源
最近更新 更多