我已将/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),但它对我没有任何影响(不在端口2375
上侦听)。似乎docker没有读取这个初始配置文件,因为我发现export http_proxy
环境也不起作用。
只有sudo docker -H tcp://127.0.0.1:2375 -H unix:///var/run/docker.sock -d
有效。
这让我很困惑!
答案 0 :(得分:29)
根据docker documentation,为Docker守护程序配置守护程序标志和环境变量的推荐方法是使用 systemd drop-in文件。
因此,对于这种特定情况,请执行以下操作:
使用命令sudo systemctl edit docker.service
在文本编辑器中打开docker.service
的覆盖文件。
添加或修改以下行,替换您自己的值。
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H tcp://127.0.0.1:2375 -H unix:///var/run/docker.sock
保存文件。
重新加载systemctl
配置。
$ sudo systemctl daemon-reload
重启Docker:
$ sudo systemctl restart docker.service
通过查看netstat
的输出以确认dockerd
正在侦听已配置的端口,检查更改是否得到遵守。
$ sudo netstat -lntp | grep dockerd
tcp 0 0 127.0.0.1:2375 0.0.0.0:* LISTEN 3758/dockerd
答案 1 :(得分: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
当前的docker安装过程似乎忽略了systemd单元文件。
答案 2 :(得分:7)
我遇到了同样的问题。
Ubuntu 14.10使用systemd
代替sysv-init/upstart
。也许你应该调查/lib/systemd/system/docker.service
来改变选项。
答案 3 :(得分:3)
我刚刚遇到了#34;同样的"问题
我注意到/ etc / default / docker中的所有选项实际上都是默认注释掉的。
我删除了DOCKER_OPTS前面的#,重新启动并按预期工作。
我认为以前的泊坞版本(1.3)默认没有注释掉这些选项,至少我不记得要删除#-sign。
答案 4 :(得分:1)
检查泊坞窗源代码(config.go和flags.go)后,我会说$DOCKER_OPTS
中可以传递的选项是泊坞窗本身的选项,-H
或--host
是docker守护程序的一个选项。
作为解决问题的解决方法,您可以编辑正在使用的init脚本文件,以在其中包含-H
选项。例如:
/etc/init/docker.conf
,使用exec "$DOCKER" -H "tcp://127.0.0.1:2375" -H "unix:///var/run/docker.sock" -d $DOCKER_OPTS
更改exec行/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 $?
;;
答案 5 :(得分:1)
与Ubuntu一起回复systemd评论: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
答案 6 :(得分:0)
我遇到了类似的挑战。当我开始寻找开始将一些系统从Ubuntu 14.04移动到Ubuntu 16.04时。我的目标是使用一个带有dockerd标志的dockerd配置文件(DOCKER_OPTS)用于Ubuntu 16.04(systemd)和Ubuntu 14.04(Upstart),而不是/etc/docker/daemon.json。我选择不使用/etc/docker/daemon.json进行docker守护进程配置,因为json不支持注释。
我希望systemd设计使用覆盖文件,它只修改dockerd标志。它使用默认的Docker systemd配置文件(/lib/systemd/system/docker.service)进行其他Docker设置。另一个目标是在每次更改或启动后在每个系统上自定义systemd。
它解决了我的挑战。它可能对你有帮助。
https://github.com/BradleyA/docker-scripts/tree/master/dockerd-configuration-options
git clone https://github.com/BradleyA/docker-scripts
cd docker-scripts/dockerd-configuration-options
答案 7 :(得分:0)
使用独立于平台的 daemon-configuration-file似乎更干净。
将"hosts"
添加到您的/etc/docker/daemon.json
中(或者如果您在启动/custom/path/to/daemon/config.json
时使用--config-file
选项,则将dockerd
添加到您的{
...
"hosts": ["tcp://127.0.0.1:2375", "unix:///var/run/docker.sock"],
...
}
中:
sudo systemctl restart docker
重新启动守护程序:
func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView {
let view = MTGCardViewPicker()
view.transform = CGAffineTransform(rotationAngle: -rotationAngle)
ImageDownloader.setMagicCard(with: cards[row].literalImageURL(), imageView: &view.imageView)
return view
}
答案 8 :(得分:0)
好吧,由于docker守护程序端口限制,我在从jenkins按需旋转从站时遇到很多问题。
所以我做到了
sudo systemctl edit docker.service
[Service]
ExecStart=
ExecStart=/usr/bin/docker daemon --host=tcp://0.0.0.0:2375
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker.service
**注意:这将公开公开您的守护程序,任何具有您的IP和端口的人都可以使用您的docker守护程序进行任何操作**