我正在完成“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
答案 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,具体取决于您的容器)比群集端口更有可能解决此问题。