如何在由docker机器创build的VM中打开端口7946和4789

我正在通过“开始使用Docker”,第4部分。我的操作系统是Win10 64x。 我的应用程序无法通过networking浏览器访问。 我从文件中find了一个可能的原因。

遇到连接问题?

请记住,为了使用群集中的入口networking,在启用群集模式之前,需要在群集节点之间打开以下端口:

用于容器networking发现的端口7946 TCP / UDP。

端口4789 UDP,用于容器入口networking。

我试图在由docker机器创build的VM中打开这些端口。 驱动程序是VirtualBox

$ docker-machine ssh default ## . ## ## ## == ## ## ## ## ## === /"""""""""""""""""\___/ === ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~ \______ o __/ \ \ __/ \____\_______/ _ _ ____ _ _ | |__ ___ ___ | |_|___ \ __| | ___ ___| | _____ _ __ | '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__| | |_) | (_) | (_) | |_ / __/ (_| | (_) | (__| < __/ | |_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_| Boot2Docker version 17.09.1-ce, build HEAD : e7de9ae - Fri Dec 8 19:41:36 UTC 2017 Docker version 17.09.1-ce, build 19e2cf6 docker@default:~$ sudo -i Boot2Docker version 17.09.1-ce, build HEAD : e7de9ae - Fri Dec 8 19:41:36 UTC 2017 Docker version 17.09.1-ce, build 19e2cf6 root@default:~# firewall-cmd --z one=public --add-port=7946/tcp --permanent -sh: firewall-cmd: not found root@default:~# vi /etc/sysconfig/iptables root@default:~# service iptables restart -sh: service: not found root@default:~# source /etc/sysconfig/iptables -sh: /etc/sysconfig/iptables: line 1: -A: not found -sh: /etc/sysconfig/iptables: line 2: -A: not found root@default:~# vi /etc/sysconfig/iptables root@default:~# service iptables status -sh: service: not found root@default:~# yum install firewalld firewalld-config -sh: yum: not found root@default:~# apt get firewalld firewalld-config -sh: apt: not found 

但是这些端口不能打开。 以下代码写在/ etc / sysconfig / iptables中

 -A INPUT -p tcp -m state --state NEW -m tcp --dport 7946 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 4789 -j ACCEPT 

检查您的VirtualBox虚拟机和本地主机之间是否需要端口转发。
例如,请参阅“ Boot2Docker:无法获取端口转发 ”

 $ VBoxManage modifyvm "boot2docker-vm" --natpf1 "tcp-port8000,tcp,,80,,80"; 

如果虚拟机已经在运行,你应该运行这个命令:

 $ VBoxManage controlvm "boot2docker-vm" natpf1 "tcp-port8000,tcp,,80,,80"; 

如果您的应用程序无法通过Web浏览器进行访问,则转发端口80(或者根据您的容器,转发8000或8080)比群集端口更有可能解决问题。