我已经改变了/etc/default/docker
DOCKER_OPTS="-H tcp://127.0.0.1:2375 -H unix:///var/run/docker.sock"
(在Ubuntu 14.04中的DOCKER_OPTS="-H tcp://127.0.0.1:2375 -H unix:///var/run/docker.sock"
版本1.4.1),但对我没有任何影响(不在2375
港口收听)。 看起来,docker不读这个初始configuration文件,因为我发现export http_proxy
环境不工作了。
只有sudo docker -H tcp://127.0.0.1:2375 -H unix:///var/run/docker.sock -d
起作用。
真让我困惑!
有很多方法可以为Docker守护进程配置守护进程标志和环境变量。 推荐的方法是使用独立于平台的daemon.json
文件,该文件位于Linux上的/etc/docker/
。
因此,要配置守护进程套接字连接,请执行以下操作:
在daemon.json
文件中设置以下标志:
{ "hosts": ["tcp://127.0.0.1:2375", "unix:///var/run/docker.sock"] }
重新启动Docker
$ sudo systemctl restart docker
每次更轻松!
根据docker文档 ,为Docker守护进程配置守护进程标志和环境变量的推荐方法是使用systemd 放入文件 。
所以,对于这个特定的情况,请执行以下操作:
使用以下内容创建一个名为/etc/systemd/system/docker.service.d/custom.conf
的文件:
[Service] ExecStart= ExecStart=/usr/bin/dockerd -H tcp://127.0.0.1:2375 -H unix:///var/run/docker.sock
冲洗更改:
$ sudo systemctl daemon-reload
重启Docker:
$ sudo systemctl restart docker
编辑文件/lib/systemd/system/docker.service
... [Service] ExecStart=/usr/bin/docker -d -H fd:// $DOCKER_OPTS ... EnvironmentFile=-/etc/default/docker ...
然后执行:
$ systemctl daemon-reload $ systemctl restart docker
在这里查看使用systemd的Debian / Ubuntu的更高版本。
此链接解释了如何正确修改systemd单元文件以使用DOCKER_OPTS: https : //github.com/docker/docker/issues/9889
本质上,你创建一个/etc/systemd/system/docker.service.d/docker.conf文件并在那里指定你的覆盖。
我必须在前面提到的文件中做下面的事情,在systemd环境中用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
来改变选项。
我刚刚遇到了“相同”的问题。
我注意到/ etc / default / docker中的所有选项实际上是默认注释掉的。
我删除了DOCKER_OPTS前面的#,重新启动,并按预期工作。
我认为以前的码头版本(1.3)没有这些选项默认注释掉,至少我不记得必须删除#号。
在检查docker源代码( config.go和flags.go )之后,我会说你可以在$DOCKER_OPTS
中传递的选项是$DOCKER_OPTS
本身的选项, -H
或者--host
是$DOCKER_OPTS
守护进程的一个选项。 作为解决您的问题的解决方法,您可以编辑您正在使用的包含-H
选项的初始化脚本文件。 例如:
/etc/init/docker.conf
,用exec "$DOCKER" -H "tcp://127.0.0.1:2375" -H "unix:///var/run/docker.sock" -d $DOCKER_OPTS
更改exec行exec "$DOCKER" -H "tcp://127.0.0.1:2375" -H "unix:///var/run/docker.sock" -d $DOCKER_OPTS
/etc/init.d/docker
文件,改变起始行如下: start-stop-daemon --start --background \ --no-close \ --exec "$DOCKER" \ --pidfile "$DOCKER_SSD_PIDFILE" \ --make-pidfile \ -- \ -H "tcp://127.0.0.1:2375" \ -H "unix:///var/run/docker.sock" \ -d -p "$DOCKER_PIDFILE" \ $DOCKER_OPTS >> \ "$DOCKER_LOGFILE" 2>&1 log_end_msg $? ;;
在回复与Ubuntu结合的系统评论:Ubuntu 14.04仍然使用Upstart,所以对/etc/default/docker
的更改应该会产生预期的效果。 直到15.04,Ubuntu默认开始使用systemd。
如果你有Ubuntu 15.04或更高版本,因此需要使用systemd,或者明确地选择在15.04之前使用systemd,那么获得OP(TCP套接字)所需效果的正确和最简单的方法是:
/etc/systemd/system/docker.service.d/docker-tcp.conf
sudo systemctl daemon-reload
sudo systemctl restart docker
文件内容:
[Service] ExecStart= ExecStart=/usr/bin/docker daemon --host=tcp://127.0.0.1:2375