[TOC] # 简介 默认情况下,容器和宿主机之间网络是隔离的,我们可以通过端口映射的方式,将容器中的端口,映射到宿主机的 某个端口上。这样我们就可以通过宿主机的ip+port的方式来访问容器里的内容 Docker的端口映射 1. 随机映射 `-P`(大写) 2. 指定映射 `-p` 宿主机`ip:宿主机端口:容器端口` 注意: 生产场景一般不使用随机映射,但是随机映射的好处就是由docker分配,端口不会冲突, 不管哪种映射都会 有所消耗,影响性能,因为涉及到映射的操作 # 随机映射实践 随机映射我们从两个方面来学习: 1、默认随机映射 2、指定主机随机映射 默认随机映射 ~~~ #命令格式: docker run -d -P [镜像名称] #命令效果: #先启动一个普通的nginx镜像 $ docker run -d nginx #查看当前宿主机开放了哪些端口 $ netstat -tnulp ~~~ 注意: 宿主机的32768被映射到容器的80端口 \-P 自动绑定所有对外提供服务的容器端口,映射的端口将会从没有 使用的端口池中自动随机选择, 但是如果连续启动多个容器的话,则下一个容器的端口默认是当前容器占用端口号 +1 # 指定主机随机映射 ~~~ #命令格式 :~$ docker run -d -p [宿主机ip]::[容器端口] --name [容器名称][镜像名称] #命令效果 :~$ docker run -d -p 192.168.8.14::80 --name nginx-1 nginx #检查效果 :~$ docker ps ~~~ # 指定映射实践 指定端口映射我们从三个方面来讲: 指定端口映射 指定多端口映射 指定端口协议映射 ![](https://box.kancloud.cn/febac825fda2fb3843f70b19bee036a1_657x294.png) ![](https://box.kancloud.cn/e4d9b547aace61ca90e25c50ef2dc8b9_650x92.png) ![](https://box.kancloud.cn/8fb89f29d6c8c3dfdda4c1b82024f97c_686x415.png) # 网络管理 ![](https://box.kancloud.cn/bfa658ea3e3960d9186ee05c70564d8f_535x378.png)