1

上周我努力docker remote api工作。由于它在 VM 上运行,因此我从那时起就没有重新启动我的 VM。今天我终于重新启动了我的虚拟机,它不再工作了(docker 和 docker-compose 工作正常,但不是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

请告诉我有什么问题。

4

2 回答 2

3

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

/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

请注意,这将打开一个端口,该端口无需任何密码即可为您的 docker 主机提供远程 root 访问权限。

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

于 2016-10-13T02:01:36.707 回答
0

我终于找到了 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:4243
  • 保存文件
  • 重启:sudo service docker restart
  • 测试: 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

于 2016-10-12T23:09:05.990 回答