在Docker 网络功能之前,您可以使用 Docker 链接功能来允许容器相互发现并将有关一个容器的信息安全地传输到另一个容器。随着 Docker 网络功能的引入,您仍然可以创建链接,但它们在默认bridge网络和 用户定义的网络之间的行为有所不同。.

假设您使用此命令运行一个简单的 Python Flask 应用程序:

$ docker run -d -P training/webapp python app.py

创建该容器时,该-P标志用于自动将其中的任何网络端口映射到Docker 主机上临时端口范围内的随机高端口。接下来,当docker ps运行时,您看到容器中的端口 5000 绑定到主机上的端口 49155。

$ docker ps nostalgic_morse

您还看到了如何使用-p标志将容器的端口绑定到特定端口。这里主机的 80 端口映射到容器的 5000 端口:

$ docker run -d -p 80:5000 training/webapp python app.py

你明白了为什么这不是一个好主意,因为它限制你只能在那个特定端口上使用一个容器。

相反,您可以指定一系列主机端口以将容器端口绑定到与默认临时端口范围不同的范围:

$ docker run -d -p 8000-9000:5000 training/webapp python app.py

这会将容器中的端口 5000 绑定到主机上 8000 到 9000 之间的随机可用端口。

还有一些其他方法可以配置-p标志。默认情况下,该-p标志将指定端口绑定到主机上的所有接口。但您也可以指定到特定接口的绑定,例如仅绑定到localhost.

$ docker run -d -p 127.0.0.1:80:5000 training/webapp python app.py

这会将容器内的端口 5000 绑定到主机上localhost或127.0.0.1接口上的端口 80 。

或者,要将容器的端口 5000 绑定到动态端口但仅限于 localhost,您可以使用:

$ docker run -d -p 127.0.0.1::5000 training/webapp python app.py

您还可以通过添加尾随/udp或/sctp. 例如:

$ docker run -d -p 127.0.0.1:80:5000/udp training/webapp python app.py

您还了解了docker port向我们显示当前端口绑定的有用快捷方式。这对于向您显示特定的端口配置也很有用。例如,如果您已将容器端口绑定到 localhost主机上的 ,则docker port输出会反映这一点。

$ docker port nostalgic_morse 5000

注意:该-p标志可以多次使用以配置多个端口。

关键词: Docker 云计算 核心 技术