我有一个容器,该容器在443上运行jupyter-hub,并映射到主机上的1443。我正在尝试在另一个容器中的Apache之后运行此服务器。但是,这两个容器无法互相通信。
我尝试为每个容器设置iptables,但没有用。
{{1}}
172.17.0.2是jupyterhub容器的IP。
答案 0 :(得分:1)
两个容器无法互相通信时的问题是由于它们不在同一个docker网络中。这是您必须要做的:
let deviceList = [{ isOnline: false }, { isOnline: true }, { isOnline: false }];
//let devicesAlive = deviceList.filter(elm => {
// return elm.isOnline = false
// });
// You should return the value from an arrow function, either like this or by explicitly calling return elm.isOnline === false.
// And you have assignment "=" instead of "===" in your code.
let devicesAlive = deviceList.filter(elm => elm.isOnline === false);
console.log(devicesAlive);
docker network ls
容器在哪个网络中运行apache
docker inspect <apache_container_id> -f "{{json .NetworkSettings.Networks }}"
容器位于apache
网络中,请创建一个新网络并将其附加到该容器上host
docker network create apache_network
docker network connect apache_network <apache_container_id>
中启动您的jupyter-hub
容器在处理容器时,请尝试使用DNS而不是IP,因为IP可能会频繁更改。
答案 1 :(得分:1)
您需要创建一个用户定义的网络,该网络允许容器相互通信。 当您执行docker run时,请为网络参数提供用户定义的网络。 请参见下面的简单示例。
docker network create --driver bridge my_custom_network
docker run --network=my_custom_network -itd --name=container1 busybox
docker run --network=my_custom_network -itd --name=container2 busybox
docker attach container2
/ # ping container1
PING container3 (172.19.0.2): 56 data bytes
64 bytes from 172.19.0.2: seq=0 ttl=64 time=0.113 ms
64 bytes from 172.19.0.2: seq=1 ttl=64 time=0.147 ms
64 bytes from 172.19.0.2: seq=2 ttl=64 time=0.146 ms
64 bytes from 172.19.0.2: seq=3 ttl=64 time=0.146 ms
下面的链接提供了更多详细信息: https://docs.docker.com/v17.09/engine/userguide/networking/#user-defined-networks