问:如何将docker0接口设置为gcloud计算实例中的外部可用IP?

我已经在谷歌云平台的CentOS 7实例上本地运行了eclipse che。 我能够在浏览器上获得界面,但无法启动项目。

从我的che.properties文件

machine.docker.local_node_host=172.17.0.1 api.endpoint=http://_my instance external IP_:${SERVER_PORT}/ide/api 

从我的/ etc / hosts (putty manualy):

  172.17.0.1 che-host 

安装Docker作为先决条件

 Docker version 1.10.3, build 20f81dd 

从我的〜/ .bash_profile文件

 export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.77-0.b03.el7_2.x86_64 export CHE_HOME=/opt/eclipse-che-4.1.0 export CHE_LOCAL_CONF_DIR=$CHE_HOME/conf export CHE_DOCKER_MACHINE_HOST=172.17.0.1 

ifconfig输出

 docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 172.17.0.1 netmask 255.255.0.0 broadcast 0.0.0.0 inet6 fe80::42:68ff:fe05:66b1 prefixlen 64 scopeid 0x20<link> ether 02:42:68:05:66:b1 txqueuelen 0 (Ethernet) RX packets 3025 bytes 334688 (326.8 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 2563 bytes 390278 (381.1 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1460 inet <google internal network IP for instance> netmask 255.255.255.255 broadcast 10.132.0.2 inet6 fe80::4001:aff:fe84:2 prefixlen 64 scopeid 0x20<link> ether 42:01:0a:84:00:02 txqueuelen 1000 (Ethernet) RX packets 402499 bytes 1381254390 (1.2 GiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 292323 bytes 58381431 (55.6 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 0 (Local Loopback) RX packets 1061 bytes 57399 (56.0 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 1061 bytes 57399 (56.0 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 veth53e0def: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet6 fe80::1005:77ff:fe1d:83a4 prefixlen 64 scopeid 0x20<link> ether 12:05:77:1d:83:a4 txqueuelen 0 (Ethernet) RX packets 42 bytes 6574 (6.4 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 40 bytes 7991 (7.8 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 

可信区域的防火墙规则

 instance-1 ~]$ sudo firewall-cmd --permanent --zone=trusted --list-all trusted (default, active) interfaces: docker0 sources: services: ports: 32768-65535/tcp 32768-65535/udp 4243/tcp 4401/tcp 4411/tcp 4403/tcp 22/tcp masquerade: no forward-ports: icmp-blocks: rich rules: 

从浏览器的控制台输出

 [STDOUT] 2016-04-05 19:40:39,511[main] [INFO] [oachttp11.Http11NioProtocol 470] - Starting ProtocolHandler ["http-nio-4401"] [STDOUT] 2016-04-05 19:40:39,515[main] [INFO] [oacatalina.startup.Catalina 642] - Server startup in 4795 ms [STDOUT] 2016-04-05 19:40:39,515[main] [INFO] [oacatalina.startup.Catalina 642] - Server startup in 4795 ms [STDOUT] 2016-04-05 19:40:39,712[nio-4401-exec-1] [WARN ] [i.ContainerResponse$BodyWriter 90] - Client has aborted connection. Response writing omitted. [STDOUT] 2016-04-05 19:40:39,712[nio-4401-exec-1] [WARN ] [i.ContainerResponse$BodyWriter 90] - Client has aborted connection. Response writing omitted. 

这发生在启动工作区代理阶段,在下面的阶段之后

 Initializing workspace ... completed Starting workspace runtime ... completed ``` 

我从chess github回购中得到的答案是:

这里的问题是,浏览器试图连接到一个工作区代理,它使用CHE_DOCKER_MACHINE_HOST ,也被服务器用来ping ws-agent。 所以, CHE_DOCKER_MACHINE_HOST应该是一个外部可用的IP。

所以,我明白, docker0需要一个外部IP,任何想法如何将IP从默认的172.17.0.1 IP切换到外部IP为docker0接口?

Interesting Posts