Docker远程api我的电脑重启后不重启
Docker remote api don't restart after my computer restart
上周我努力 docker remote api
工作。由于它在 VM 上 运行ning,从那以后我就没有重新启动我的 VM。今天我终于重新启动了我的虚拟机,它不再工作了(docker 和 docker-compose 工作正常,但不是 docker remote api
)。我的 docker 初始化文件如下所示:/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
.....
.....
上次我在这里进行设置this
我试过 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
请告诉我有什么问题。
我终于找到了 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
您的启动脚本包含无效命令:
/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 主机。
任何想要接管您的机器的人都可以 运行 docker run -v /:/target -H your.ip:4243 busybox /bin/sh
获得根目录 shell 并将您的文件系统安装在 /target。如果您想保护您的主机,请遵循 this guide to setting up TLS certificates.
上周我努力 docker remote api
工作。由于它在 VM 上 运行ning,从那以后我就没有重新启动我的 VM。今天我终于重新启动了我的虚拟机,它不再工作了(docker 和 docker-compose 工作正常,但不是 docker remote api
)。我的 docker 初始化文件如下所示:/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
.....
.....
上次我在这里进行设置this
我试过 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
请告诉我有什么问题。
我终于找到了 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
您的启动脚本包含无效命令:
/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 主机。
任何想要接管您的机器的人都可以 运行 docker run -v /:/target -H your.ip:4243 busybox /bin/sh
获得根目录 shell 并将您的文件系统安装在 /target。如果您想保护您的主机,请遵循 this guide to setting up TLS certificates.