如何在Ubuntu中自动使用自定义参数启动Docker守护进程?

5

我需要在Ubuntu中使用一些命令行参数启动docker守护进程,手动操作时,以下命令可以正常工作:

$ dockerd -H fd:// -H tcp://127.0.0.1:2375 -H unix:///var/run/docker.sock

上述命令使我能够将docker与PhpStorm的docker插件集成,并从那里配置容器。在我的情况下,Docker守护程序开始侦听TCP端口2375,该端口由PhpStorm使用。
我需要以相同的参数自动启动Docker守护程序,但似乎有很多争议性的信息。我尝试了许多不同的解决方案,包括更改/etc/default/docker或/etc/systemd/system/docker.service.d/docker.conf并在其中编辑DOCKER_OPTS参数。
如何在Ubuntu 16.04中自动运行带有上述命令行参数的docker守护进程?

我需要执行命令 >sudo service docker restart。在Ubuntu 16.04上,建议使用 >systemctl daemon-reload 没有起作用。否则,我使用了Yury Fedorow的答案中提供的另一种解决方案。但是,我添加了一个不安全的注册表,而不是要监听的端口。 - jseteny
1个回答

4

在其他无法解决的方案中,这里有一个可行的解决方案。它包括更改docker.service的定义:

# edit the following file
# /lib/systemd/system/docker.service
# ...
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://127.0.0.1:2375 -H unix:///var/run/docker.sock
# ...

修改完该文件后,运行systemctl daemon-reload命令以应用对docker.service文件所做的更改,然后运行service docker restart命令。

另一种解决方案不需要更改docker.service文件,这样在升级docker包后可以随时替换并避免配置错误。它需要创建或编辑/etc/docker/daemon.json文件:

{
  "hosts": [
    "fd://",
    "unix:///var/run/docker.sock",
    "tcp://127.0.0.1:2375"
  ]
}

在进行这些更改后重新启动Docker服务,可以使Docker守护程序侦听TCP端口2375上的连接或使用Unix套接字的连接。请注意,上述解决方案不能同时使用:应该只使用其中一种以避免冲突。

我不得不使用相同的解决办法,使用docker.service,不幸的是,使用DOCKER_OPTS的官方方法忽略了这个特定的设置。 - oryades

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接