Docker提供了两个功能来知足访问的基本需求:一是容许映射容器内应用的服务端口到本地宿主主机;另外一个是互联机制实现多个容器间经过容器名来快速实现访问。python
当容器中运行一些网络应用,要让外部访问这些应用时,能够经过-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
容器的互联会在源和接受容器之间建立链接关系,接收容器能够经过容器名快速访问到源容器,而不用指定具体的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文件。