第七章 网络基础配置
本章讲解 Docker 的网络功能,包括端口映射机制将容器内应用服务提供给外部网络,以及通过容器互联系统让多个容器之间镜像快捷的网络通信。
1. 端口映射实现访问容器
从外部访问容器应用
当容器运行一些网络应用,要让外部访问这些应用时,可以通过 -P 或 -p 参数来指定端口映射。
当使用 -P 标记时,Docker 会随机映射一个 49000~49900 的端口至容器内部开放的网络端口。
-p (小写) 则可以指定要映射的端口,且在一个指定端口上只可以绑定一个容器。支持的格式有:ip:hostPort:containerPort | ip::containerPort | hostPort:containerPort
映射所有接口地址
使用 hostPort:containerPort 格式将本地的 5000 端口映射到容器的 5000 端口。
此时默认会绑定本地所有接口上的所有地址。
多次使用 -p 标记可以绑定多个端口。
映射到指定地址的指定端口
ip:hostPort:containerPort 格式指定映射使用一个特定地址
映射到指定地址的任意端口
ip :: containerPort 绑定 localhost 的任意端口到容器的 5000 端口,本地主机会自动分配一个端口。
还可以使用 udp 标记来指定 udp 端口:
- $ sudo docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py
查看映射端口配置
可用 docker port 来查看当前映射的端口配置,也可以查看到绑定的地址
注意: 容器有自己的内部网络和 IP 地址 (使用 docker inspect + 容器 ID 可获取所有的变量值)。
2. 容器互联实现容器间通信
容器连接系统会在源和接收容器之间创建一个隧道,接收容器可以看到源容器指定的信息。
自定义容器命名
连接系统依据容器的名称来执行。
创建容器是,系统默认会分配一个名字,但自定义命名容器有两个好处:
* 自定义命名,比较好记
* 当要连接其他容器时,可作为一个有用的参考点。
使用 –name 标记可为容器自定义命名
使用 docker ps 或 docker inspect 查看容器的名字。
注意: 容器的名称是唯一的。当要使用一个已经使用过的名称时,需要先用 docker rm 来删除之前创建的同名容器。
注意: 执行 docker run 时,--rm 和 -d 参数不能同时使用。
容器互联
使用 --link 参数可以让容器之间安全的进行交互。
参数格式:--link name:alias,其中 name 是要链接的容器的名称,alias 是这个连接的别名。
Docker 通过两种方式为容器公开连接信息:
* 环境变量。
* 更新 / etc/hosts 文件。
使用 env 命令可查看容器的环境变量。
用户可以连接多个子容器到父容器。
就爱阅读 www.92to.com 网友整理上传, 为您提供最全的知识大全, 期待您的分享,转载请注明出处。
来源: http://www.92to.com/bangong/2017/02-18/17276856.html