我的电脑重新启动后,Docker远程API不会重新启动

上周我努力让我的docker remote api工作。 当它在虚拟机上运行时,我从那以后没有重启我的虚拟机。 今天我终于重新启动了我的虚拟机,它不再工作(docker和docker组成正常工作,但不是docker remote api )。 我的docker init文件如下所示: /etc/init/docker.conf

 description "Docker daemon" start on filesystem and started lxc-net stop on runlevel [!2345] respawn script /usr/bin/docker -H tcp://0.0.0.0:4243 -d end script # description "Docker daemon" # start on (filesystem and net-device-up IFACE!=lo) # stop on runlevel [!2345] # limit nofile 524288 1048576 # limit nproc 524288 1048576 respawn kill timeout 20 ..... ..... 

上次我在这里指出了这个设置

我试图nmap来查看port 4243是否打开。

 ubuntu@ubuntu:~$ nmap 0.0.0.0 -p- Starting Nmap 7.01 ( https://nmap.org ) at 2016-10-12 23:49 CEST Nmap scan report for 0.0.0.0 Host is up (0.000046s latency). Not shown: 65531 closed ports PORT STATE SERVICE 22/tcp open ssh 43978/tcp open unknown 44672/tcp open unknown 60366/tcp open unknown Nmap done: 1 IP address (1 host up) scanned in 1.11 seconds 

正如你所看到的,端口4232没有打开。

当我运行:

 ubuntu@ubuntu:~$ echo -e "GET /images/json HTTP/1.0\r\n" | nc -U This is nc from the netcat-openbsd package. An alternative nc is available in the netcat-traditional package. usage: nc [-46bCDdhjklnrStUuvZz] [-I length] [-i interval] [-O length] [-P proxy_username] [-p source_port] [-q seconds] [-s source] [-T toskeyword] [-V rtable] [-w timeout] [-X proxy_protocol] [-x proxy_address[:port]] [destination] [port] 

我也运行这个:

 ubuntu@ubuntu:~$ sudo docker -H=tcp://0.0.0.0:4243 -d flag provided but not defined: -d See 'docker --help'. 

我多次重新启动计算机,并尝试了很多没有成功的事情。 我已经有一个名为docker的组,我的用户在:

 ubuntu@ubuntu:~$ groups $USER ubuntu : ubuntu adm cdrom sudo dip plugdev lpadmin sambashare docker 

请告诉我什么是错的。

您的启动脚本包含无效的命令:

 /usr/bin/docker -H tcp://0.0.0.0:4243 -d 

相反,你需要这样的东西:

 /usr/bin/docker daemon -H tcp://0.0.0.0:4243 

从1.12开始,现在是(但是docker daemon仍然可以):

 /usr/bin/dockerd -H tcp://0.0.0.0:4243 

请注意,这是打开一个端口,远程root访问没有任何密码到你的docker主机。

任何想要接pipe您的机器的人都可以运行docker run -v /:/target -H your.ip:4243 busybox /bin/sh来获得一个在/ target下挂载文件系统的root shell。 如果您想保护主机,请按照本指南设置TLS证书 。

我终于find了www.ivankrizsan.se ,现在正在找工作。 感谢这个家伙(或女孩);)。 这个设置适用于我在Ubuntu 16.04上。 这里是如何做的:

  • 编辑这个文件/lib/systemd/system/docker.service并用ExecStart=/usr/bin/dockerd -H fd:// ExecStart=/usr/bin/docker daemon -H fd:// -H tcp://0.0.0.0:4243replace这行ExecStart=/usr/bin/dockerd -H fd:// ExecStart=/usr/bin/docker daemon -H fd:// -H tcp://0.0.0.0:4243
  • 保存文件
  • 重新启动: sudo service docker restart
  • testing: curl http://localhost:4243/version
  • 结果:你应该看到这样的东西:

    {"Version":"1.11.0","ApiVersion":"1.23","GitCommit":"4dc5990","GoVersion" "go1.5.4","Os":"linux","Arch":"amd64","KernelVersion":"4.4.0-22-generic","BuildTime":"2016-04-13T18:38:59.968579007+00:00"}

注意:保持0.0.0.0对安全性不好,为了更安全,你应该使用127.0.0.1