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

sea*_*ook 19 ubuntu upstart systemd docker

我已经改变了/etc/default/dockerDOCKER_OPTS="-H tcp://127.0.0.1:2375 -H unix:///var/run/docker.sock"(泊坞窗1.4.1版本在Ubuntu 14.04),但它不采取对我有什么影响(在港不听2375).似乎docker不读取这个初始配置文件,因为我发现export http_proxy环境也不起作用.

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

这让我很困惑!

Cam*_*lva 31

根据docker文档,为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
    
    Run Code Online (Sandbox Code Playgroud)
  3. 保存文件.

  4. 重新加载systemctl配置.

     $ sudo systemctl daemon-reload
    
    Run Code Online (Sandbox Code Playgroud)
  5. 重启Docker:

     $ sudo systemctl restart docker.service
    
    Run Code Online (Sandbox Code Playgroud)
  6. 通过查看netstat确认的输出是否dockerd正在侦听已配置的端口来检查更改是否得到遵守.

    $ sudo netstat -lntp | grep dockerd
    tcp        0      0 127.0.0.1:2375          0.0.0.0:*               LISTEN      3758/dockerd
    
    Run Code Online (Sandbox Code Playgroud)


Ros*_*oss 14

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

此链接说明如何正确修改systemd单元文件以使用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
Run Code Online (Sandbox Code Playgroud)

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


小智 8

我遇到过同样的问题.

Ubuntu 14.10使用systemd而不是sysv-init/upstart.也许你应该考虑/lib/systemd/system/docker.service改变选项.