在同一主机

时间:2017-04-27 14:17:33

标签: docker

这看似微不足道,但经过一些试验错误后,我来到SO社区寻求帮助!

我创建了一个网络,称之为docker-net。

我有一个linux容器,让它全部是LC1,它的发布端口为6789(因此在创建时它有参数-p 6789:6789)并且我将它加入docker-net network( - -network docker-net) 这很好,通过我的主机,我可以与它沟通没问题。

我切换到windows容器并检查LC1是否仍在运行。它确实!惊人的。

我创建了一个容器,让它称之为WC1。它还发布了一个9000端口,内部映射到80(-p 9000:80)

WC1内的应用程序尝试使用从网络分配的IP连接到LC1(docker inspect LC1),我无法进行通信。

这可能是一个我无法理解的概念。

据我所知,WC1和LC1有不同的网关和子网。这可能是罪魁祸首吗?

非常感谢帮助我完成这项工作!

修改 以下是我为上述场景运行的命令:

docker network create docker-net
docker run -d -p 6789:6789 --name LC1 --network docker-net LC1
docker inspect LC1

IP为172.18.0.2

切换到Windows容器

docker run -d -p 9000:80 --name WC1 WC1

2 个答案:

答案 0 :(得分:0)

docker network connect documentation中,它声明您可以为容器分配IP,同样应该使用docker run --network name --ip。然后使用该IP访问容器。

  

指定容器将在给定网络上使用的IP地址

     

您可以指定要分配给的IP地址   容器的界面。

     

$ docker network connect --ip 10.10.36.122多主机网络   container2的

答案 1 :(得分:0)

我找到了这些:

我认为让2个容器进行通信的唯一方法是通过主机和暴露端口。例如,LC1将使用-p [your app port]:8080和WC1 -p [your app port]:9090

[your app port]我的意思是由你来决定使用什么(tcp / udp监听套接字,REST api ......)

随着码头工具的发展,在不久的将来可能会有更好的解决方案。

相关问题