这看似微不足道,但经过一些试验错误后,我来到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
答案 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 ......)
随着码头工具的发展,在不久的将来可能会有更好的解决方案。