当前位置: 首页>>技术问答>>正文


DOCKER_OPTS在配置文件/etc/default/docker中不起作用

, , ,

问题描述

我用DOCKER_OPTS="-H tcp://127.0.0.1:2375 -H unix:///var/run/docker.sock"(ubuntu 14.04中的docker版本1.4.1)更改了/etc/default/docker,但它对我没有任何影响(不在端口2375上监听)。似乎docker不读取这个初始配置文件,因为我发现export http_proxy环境也不起作用。

只有sudo docker -H tcp://127.0.0.1:2375 -H unix:///var/run/docker.sock -d有效。

这让我很困惑!

最佳解决方法

根据docker documentation,为Docker守护程序配置守护程序标志和环境变量的推荐方法是使用systemd drop-in文件。

因此,对于这种特定情况,请执行以下操作:

  1. 使用命令sudo systemctl edit docker.service在文本编辑器中打开docker.service的覆盖文件。

  2. 添加或修改以下行,替换您自己的值。

    [Service]
    ExecStart=
    ExecStart=/usr/bin/dockerd -H tcp://127.0.0.1:2375 -H unix:///var/run/docker.sock
    
  3. 保存文件。

  4. 重新加载systemctl配置。

     $ sudo systemctl daemon-reload
    
  5. 重启Docker:

     $ sudo systemctl restart docker.service
    
  6. 通过查看netstat的输出以确认dockerd正在侦听已配置的端口,检查是否遵守了更改。

    $ sudo netstat -lntp | grep dockerd
    tcp        0      0 127.0.0.1:2375          0.0.0.0:*               LISTEN      3758/dockerd
    

次佳解决方法

有关使用systemd的Debian /Ubuntu的更高版本,请参见此处。

此链接说明如何正确修改系统单元文件以使用DOCKER_OPTS:https://github.com/docker/docker/issues/9889

基本上,您创建一个/etc/systemd/system/docker.service.d/docker.conf文件并在那里指定您的覆盖。

我必须在上述文件中执行以下操作,以在系统环境中使用DOCKER_OPTS环境变量启动docker:

[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network.target docker.socket
Requires=docker.socket

[Service]
EnvironmentFile=-/etc/default/docker
ExecStart=
ExecStart=/usr/bin/docker -d $DOCKER_OPTS -H fd://
MountFlags=slave
LimitNOFILE=1048576
LimitNPROC=1048576
LimitCORE=infinity

[Install]
WantedBy=multi-user.target

当前的docker安装过程似乎忽略了systemd单元文件。

第三种解决方法

我遇到过同样的问题。

Ubuntu 14.10使用systemd代替sysv-init/upstart。也许您应该查看/lib/systemd/system/docker.service来更改选项。

第四种方法

我刚刚遇到”same”问题。

我注意到/etc /default /docker中的所有选项实际上都是默认注释掉的。

我删除了DOCKER_OPTS前面的#,重新启动并按预期工作。

我认为以前的docker版本(1.3)默认没有注释掉这些选项,至少我不记得必须删除#-sign。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/6447.html,未经允许,请勿转载。