如何使一个容器在外部networking中可见,并在生产中处理IP地址

我有:

  • 使用Hyper-V的裸机上的Windows服务器
  • 运行在Hyper-V中的Ubuntu服务器
  • 一个在Ubuntu服务器上运行的NGINX Web应用程序的Docker容器

每次运行Docker映像时,都会在Docker0networking接口上获取新的IP地址。 对于生产,我不知道如何使Docker容器对外部networking可见。 我也不知道如何处理每次图像运行时IP地址都会改变的事实。

什么是正确的方法来:

  • 使一个Docker容器对外部networking可见?
  • 在生产中以可重复的方式处理Docker容器IP地址?

当您使用docker run运行Docker容器时,应该使用-p开关来转发端口,例如:

 docker run -p 80:80 nginx 

这会将端口80从Ubuntu服务器路由到Nginx容器内的端口80。

您应该在https://docs.docker.com/reference/run/#expose-incoming-ports上查看Docker文档。

当你有多个容器和链接时,你应该在Dockerfile中使用EXPOSE ,如下所示: https ://docs.docker.com/reference/builder/#expose。