Docker端口映射与容器互联

       Docker提供了两个功能来知足访问的基本需求:一是容许映射容器内应用的服务端口到本地宿主主机;另外一个是互联机制实现多个容器间经过容器名来快速实现访问。python

1、端口映射实现访问容器

       当容器中运行一些网络应用,要让外部访问这些应用时,能够经过-P或-p参数来指定端口映射。当使用-P时,Docker会随机映射一个49000~49900的端口到内部容器开放的网络端口:docker run -d -P training/webapp python app.pyweb

       -p能够指定要映射的端口,而且在一个指定端口上只能够绑定一个容器。支持的格式有:docker

       ① 映射全部接口地址:HostPort:ContainerPort(屡次使用-p标记能够绑定多个端口)数据库

       ② 映射到指定地址的指定端口:IP:HostPort:ContainerPort安全

       ③ 映射到指定地址的任意端口:IP::ContainerPort网络

       能够使用docker port命令来查看当前映射的端口配置和绑定地址。app

2、互联机制实现便捷访问

       容器的互联会在源和接受容器之间建立链接关系,接收容器能够经过容器名快速访问到源容器,而不用指定具体的IP地址。webapp

       使用--link参数能够让容器之间安全地进行交互,格式为--link name:alias。先建立一个新的数据库容器db:post

              docker run -d --name db training/postgres接口

       再建立一个web容器,并将它链接到db容器:

              docker run -d -P --name web --link db:db training/webapp python app.py

       使用docker ps查看容器链接,能够看到db容器的names列表有db也有web/db。这表示web容器链接到db容器,容许web容器访问db容器的信息。Docker至关于在两个互联的容器之间建立了一个虚拟通道,并且不用映射它们的端口到宿主主机上在启动db容器时并无使用-P和-p标记,从而避免了暴露数据库服务端口到外部网络上。

       Docker经过两种方式为容器公开链接信息:更新环境变量,更新/etc/hosts文件。

相关文章
相关标签/搜索