首页 文章

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

提问于
浏览
5

我正在完成“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

    还要检查VirtualBox VM和localhost之间是否需要某些端口转发 .
    请参阅“Boot2Docker: can't get ports forwarding to work”作为示例:

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

    如果vm已在运行,则应运行此其他命令:

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

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

  • 0

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

相关问题