我正在完成“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 回答
还要检查VirtualBox VM和localhost之间是否需要某些端口转发 .
请参阅“Boot2Docker: can't get ports forwarding to work”作为示例:
如果vm已在运行,则应运行此其他命令:
如果您的应用程序无法通过Web浏览器访问,则转发端口80(或8000或8080,具体取决于您的容器)比群集端口更有可能解决问题 .
我在这里遇到了同样的问题 . 我实际上没有打到正确的端口 . 在本教程的第一部分中,webapp位于端口4000上 . 尝试此操作,或更新docker-compose文件以将端口80重定向到80 .