以下命令是否链接两个容器以及公开我网络上的端口?..
docker run -d -p 5000:5000 --link my-postgres:postgres danwahlin/aspnetcore
我正在观看Dav Wahlin关于Docker的课程,而这一命令让我大吃一惊。这是否意味着可以从我的网络访问端口5000并在两个容器之间链接?如果是这样,那么链接对于容器之间的通信是不重要的,因为它们可以只使用配置文件中的IP和端口。正确的吗?
答案 0 :(得分:0)
看起来你感到困惑"传统链接"与#34;集装箱网络"。正如您的示例所示,创建链接会在容器hosts
文件中创建一个条目,以便它们可以按名称相互解析。
在上面的示例中,您创建了一个别名" postgres"到了我的后期"容器。在此处考虑名称解析。这对隔离网络堆栈没有任何作用。
接下来,您有--port
或-p
开关,它将容器端口暴露给网络。在这里,您将公开端口5000.如果没有此开关,您将不会暴露任何内容,因此不会接收任何来电。
如果你想隔离容器,你可以使用"桥接网络"像这样:
docker network create --driver bridge mynetwork
创建网络后,只有添加到网络的容器才会相互通信。例如:
docker run -d --net=mynetwork --name postgres postgres:latest
docker run -d --net=mynetwork --name node node:latest