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

时间:2017-12-27 09:55:21

标签: docker

我正在完成“Docker入门”,第4部分。我的操作系统是Win10 64x。 我的应用无法通过网络浏览器访问。我从文件中找到了可能的原因。

  

遇到连接问题?

     

请记住,为了在群集中使用入口网络,您需要在群集节点之间打开以下端口:

     

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

     

端口4789 UDP用于容器入口网络。

我试图在由docker机器创建的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

2 个答案:

答案 0 :(得分:1)

我在这里遇到了同样的问题。 我实际上没有击中正确的端口。 在本教程的第一部分中,Web应用程序位于端口4000上。 尝试此操作,或更新docker-compose文件以将端口80重定向到80。

答案 1 :(得分:0)

检查VirtualBox VM和本地主机之间是否需要一些端口转发 见&#34; Boot2Docker: can't get ports forwarding to work&#34;举个例子:

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

如果vm已在运行,则应运行另一个命令:

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

如果您的应用无法通过网络浏览器访问,则转发端口80(或8000或8080,具体取决于您的容器)比群集端口更有可能解决此问题。