Docker端口映射 不念不忘少年蓝@ 2022-06-11 08:48 300阅读 0赞 为什么要端口映射? 在启动容器时,如果不配置宿主机器与虚拟机的端口映射,外部程序是无法访问虚拟机的,因为没有端口。 端口映射的指令是什么? docker指令: docker run -p ip:hostPort:containerPort redis 使用-p参数 会分配宿主机的端口映射到虚拟机。 IP表示主机的IP地址。 hostPort表示宿主机的端口。 containerPort表示虚拟机的端口。 支持的格式有三种: ip:hostPort:containerPort:映射指定地址的指定端口到虚拟机的指定端口(不常用) 如:127.0.0.1:3306:3306,映射本机的3306端口到虚拟机的3306端口。 ip::containerPort:映射指定地址的任意端口到虚拟机的指定端口。(不常用) 如:127.0.0.1::3306,映射本机的3306端口到虚拟机的3306端口。 hostPort:containerPort:映射本机的指定端口到虚拟机的指定端口。(常用) 如:3306:3306,映射本机的3306端口到虚拟机的3306端口。 如何查看是否映射成功? 使用docker ps命令查看 ![2017073016235626.jpg][] 出现6379/tcp的表示宿主机并没有打开与虚拟机的端口映射。 出现0.0.0.0:3306->3306/tcp表示宿主机的3306端口映射到了虚拟机的3306端口。 也可以使用 docker port NAME查看端口映射情况。 ![2017073016235627.jpg][] 表示虚拟机的3306端口映射到了主机的3306端口。 如果没有任何回复,表示端口映射失败。 5.1 自动映射端口 \-P使用时需要指定--expose选项,指定需要对外提供服务的端口 $ sudo docker run -t -P --expose 22 --name server ubuntu:14.04 使用 docker run -P自动绑定所有对外提供服务的容器端口,映射的端口将会从没有使用的端口池中 (49000..49900) 自动选择 , 你可以通过 docker ps、 docker inspect <container\_id> 或者 docker port <container\_id> <port> 确定具体的绑定信息。 5.2 绑定端口到指定接口 基本语法 $ sudo docker run -p \[(\[<host\_interface>:\[host\_port\]\])|(<host\_port>):\]<container\_port>\[/udp\] <image> <cmd> 默认不指定绑定 ip 则监听所有网络接口。 绑定 TCP 端口 \# Bind TCP port 8080 of the container to TCP port 80 on 127.0.0.1 of the host machine. $ sudo docker run -p 127.0.0.1:80:8080 <image> <cmd> \# Bind TCP port 8080 of the container to a dynamically allocated TCP port on 127.0.0.1 of the host machine. $ sudo docker run -p 127.0.0.1::8080 <image> <cmd> \# Bind TCP port 8080 of the container to TCP port 80 on all available interfaces of the host machine. $ sudo docker run -p 80:8080 <image> <cmd> \# Bind TCP port 8080 of the container to a dynamically allocated TCP port on all available interfaces $ sudo docker run -p 8080 <image> <cmd> 绑定 UDP 端口 \# Bind UDP port 5353 of the container to UDP port 53 on 127.0.0.1 of the host machine. $ sudo docker run -p 127.0.0.1:53:5353/udp <image> <cmd> ## 1、单IP多容器映射规划方案 ## 此种环境适用只有单个IP环境下,如云主机等。 1.1 端口映射规划表格: 规划不同的端口段,映射到容器从而对外提供服务。 <table style="word-wrap:break-word; border-collapse:collapse; padding:0px; margin:0px auto 10px; font-size:12px; color:rgb(85,85,85); font-family:宋体,"background-color:#FFFFFF;""> <tbody style="word-wrap:break-word; padding:0px; margin:0px"> <tr style="word-wrap:break-word; padding:0px; margin:0px; height:40px"> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; background:rgb(141,179,226); border:1px solid rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> <span style="word-wrap:break-word; padding:0px; margin:0px"><span style="word-wrap:break-word; padding:0px; margin:0px; font-family:宋体">主机名称</span></span></p> </td> <td colspan="2" style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; background:rgb(141,179,226); border-width:1px; border-style:solid solid solid none; border-color:rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> <span style="word-wrap:break-word; padding:0px; margin:0px">ssh<span style="word-wrap:break-word; padding:0px; margin:0px; font-family:宋体">映射</span></span></p> </td> <td colspan="2" style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; background:rgb(141,179,226); border-width:1px; border-style:solid solid solid none; border-color:rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> <span style="word-wrap:break-word; padding:0px; margin:0px">mysql<span style="word-wrap:break-word; padding:0px; margin:0px; font-family:宋体">映射</span></span></p> </td> <td colspan="2" style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; background:rgb(141,179,226); border-width:1px; border-style:solid solid solid none; border-color:rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> <span style="word-wrap:break-word; padding:0px; margin:0px">nginx<span style="word-wrap:break-word; padding:0px; margin:0px; font-family:宋体">映射</span></span></p> </td> <td colspan="2" style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; background:rgb(141,179,226); border-width:1px; border-style:solid solid solid none; border-color:rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> <span style="word-wrap:break-word; padding:0px; margin:0px">redis<span style="word-wrap:break-word; padding:0px; margin:0px; font-family:宋体">映射</span></span></p> </td> </tr> <tr style="word-wrap:break-word; padding:0px; margin:0px; height:40px"> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; border-width:1px; border-style:none solid solid; border-color:rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> redis-test</p> </td> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; border-width:1px; border-style:none solid solid none; border-color:rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> 51000</p> </td> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; border-width:1px; border-style:none solid solid none; border-color:rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> 22</p> </td> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; border-width:1px; border-style:none solid solid none; border-color:rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> 51001</p> </td> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; border-width:1px; border-style:none solid solid none; border-color:rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> 3306</p> </td> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; border-width:1px; border-style:none solid solid none; border-color:rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> 51004</p> </td> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; border-width:1px; border-style:none solid solid none; border-color:rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> 80</p> </td> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; border-width:1px; border-style:none solid solid none; border-color:rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> 51002</p> </td> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; border-width:1px; border-style:none solid solid none; border-color:rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> 6379</p> </td> </tr> <tr style="word-wrap:break-word; padding:0px; margin:0px; height:40px"> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; border-width:1px; border-style:none solid solid none; border-color:rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> 51005</p> </td> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; border-width:1px; border-style:none solid solid none; border-color:rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> 8000</p> </td> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; border-width:1px; border-style:none solid solid none; border-color:rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> 51003</p> </td> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; border-width:1px; border-style:none solid solid none; border-color:rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> 6381</p> </td> </tr> <tr style="word-wrap:break-word; padding:0px; margin:0px; height:40px"> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; border-width:1px; border-style:none solid solid none; border-color:rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> 51006</p> </td> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; border-width:1px; border-style:none solid solid none; border-color:rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> 8888</p> </td> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; border-width:1px; border-style:none solid solid none; border-color:rgb(221,221,221)"> <br style="word-wrap:break-word; padding:0px; margin:0px"> </td> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; border-width:1px; border-style:none solid solid none; border-color:rgb(221,221,221)"> <br style="word-wrap:break-word; padding:0px; margin:0px"> </td> </tr> <tr style="word-wrap:break-word; padding:0px; margin:0px; height:40px"> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; border-width:1px; border-style:none solid solid; border-color:rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> scheduler-test</p> </td> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; border-width:1px; border-style:none solid solid none; border-color:rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> 52000</p> </td> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; border-width:1px; border-style:none solid solid none; border-color:rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> 22</p> </td> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; border-width:1px; border-style:none solid solid none; border-color:rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> 52001</p> </td> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; border-width:1px; border-style:none solid solid none; border-color:rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> 3306</p> </td> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; border-width:1px; border-style:none solid solid none; border-color:rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> 52004</p> </td> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; border-width:1px; border-style:none solid solid none; border-color:rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> 80</p> </td> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; border-width:1px; border-style:none solid solid none; border-color:rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> 52002</p> </td> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; border-width:1px; border-style:none solid solid none; border-color:rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> 6379</p> </td> </tr> <tr style="word-wrap:break-word; padding:0px; margin:0px; height:40px"> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; border-width:1px; border-style:none solid solid none; border-color:rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> 52005</p> </td> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; border-width:1px; border-style:none solid solid none; border-color:rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> 8888</p> </td> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; border-width:1px; border-style:none solid solid none; border-color:rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> 52003</p> </td> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; border-width:1px; border-style:none solid solid none; border-color:rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> 6381</p> </td> </tr> <tr style="word-wrap:break-word; padding:0px; margin:0px; height:40px"> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; border-width:1px; border-style:none solid solid none; border-color:rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> 52006</p> </td> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; border-width:1px; border-style:none solid solid none; border-color:rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> 8000</p> </td> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; border-width:1px; border-style:none solid solid none; border-color:rgb(221,221,221)"> <br style="word-wrap:break-word; padding:0px; margin:0px"> </td> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; border-width:1px; border-style:none solid solid none; border-color:rgb(221,221,221)"> <br style="word-wrap:break-word; padding:0px; margin:0px"> </td> </tr> <tr style="word-wrap:break-word; padding:0px; margin:0px; height:40px"> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; border-width:1px; border-style:none solid solid; border-color:rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> …</p> </td> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; border-width:1px; border-style:none solid solid none; border-color:rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> …</p> </td> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; border-width:1px; border-style:none solid solid none; border-color:rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> …</p> </td> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; border-width:1px; border-style:none solid solid none; border-color:rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> …</p> </td> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; border-width:1px; border-style:none solid solid none; border-color:rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> …</p> </td> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; border-width:1px; border-style:none solid solid none; border-color:rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> …</p> </td> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; border-width:1px; border-style:none solid solid none; border-color:rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> …</p> </td> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; border-width:1px; border-style:none solid solid none; border-color:rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> …</p> </td> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; border-width:1px; border-style:none solid solid none; border-color:rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> …</p> </td> </tr> </tbody> </table> docker run -h="redis-test" --name redis-test -d -p 51000:22 -p 51001:3306 -p 51003:6379 -p 51004:6381 -p 51005:80 -p 51006:8000 -p 51007:8888 debian02 /etc/rc.local docker run -h="salt\_zabbix\_manager02" --name salt\_zabbix\_manager02 -d -p 52000:22 -p 52001:3306 -p 52003:6379 -p 52004:6381 -p 52005:80 -p 52006:8000 -p 52007:8888 debian02 /etc/rc.local 1.3 上述启动参数解释: \-h 是指启动后容器中的主机名。 \--name 是宿主机上容器的名称,以后启动停止容器不必用容器ID,用名称即可,如docker stop redis-test。 \-d 以后台形式运行。 \-p 指定映射端口,如果需要映射UDP端口,则格式是 -p3000:3000/udp。 debian02 是基础镜像名称。 /etc/rc.local 是容器的启动命令,把多个启动脚本放/etc/rc.local中,方便多个程序随容器开机自启动。 ## 2、多IP多容器映射规划方案 ## 此规划比较适用于内网测试研发环境,所有对外访问IP都需要配置在宿主机上,如以第二IP eth0:1,eth0:2这种形式配置,然后每个IP和容器的端口映射配置就可以一致了。 2.1 端口与IP映射规划表格: (此处是内网IP,宿主机IP是10.28.103.1) <table style="word-wrap:break-word; border-collapse:collapse; padding:0px; margin:0px auto 10px; font-size:12px; color:rgb(85,85,85); font-family:宋体,"background-color:#FFFFFF;""> <tbody style="word-wrap:break-word; padding:0px; margin:0px"> <tr style="word-wrap:break-word; padding:0px; margin:0px; height:17px"> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; background:rgb(141,180,227); border:1px solid rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> <span style="word-wrap:break-word; padding:0px; margin:0px"><span style="word-wrap:break-word; padding:0px; margin:0px; font-family:宋体">主机名称</span></span></p> </td> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; background:rgb(141,180,227); border-width:1px; border-style:solid solid solid none; border-color:rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> <span style="word-wrap:break-word; padding:0px; margin:0px"><span style="word-wrap:break-word; padding:0px; margin:0px; font-family:宋体">对外访问</span>IP</span></p> </td> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; background:rgb(141,180,227); border-width:1px; border-style:solid solid solid none; border-color:rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> <span style="word-wrap:break-word; padding:0px; margin:0px"><span style="word-wrap:break-word; padding:0px; margin:0px; font-family:宋体">容器开放端口</span></span></p> </td> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; background:rgb(141,180,227); border-width:1px; border-style:solid solid solid none; border-color:rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> <span style="word-wrap:break-word; padding:0px; margin:0px"><span style="word-wrap:break-word; padding:0px; margin:0px; font-family:宋体">操作系统</span></span></p> </td> </tr> <tr style="word-wrap:break-word; padding:0px; margin:0px; height:36px"> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; border-width:1px; border-style:none solid solid; border-color:rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> iframe-test</p> </td> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; border-width:1px; border-style:none solid solid none; border-color:rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> 10.18.103.2</p> </td> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; border-width:1px; border-style:none solid solid none; border-color:rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> 22 3306 80 8000 8888 443 6379 6381</p> </td> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; border-width:1px; border-style:none solid solid none; border-color:rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> debian7</p> </td> </tr> <tr style="word-wrap:break-word; padding:0px; margin:0px; height:36px"> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; border-width:1px; border-style:none solid solid; border-color:rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> web-test</p> </td> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; border-width:1px; border-style:none solid solid none; border-color:rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> 10.18.103.3</p> </td> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; border-width:1px; border-style:none solid solid none; border-color:rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> 22 3306 80 8000 8888 443 6379 6381</p> </td> <td style="word-wrap:break-word; line-height:1.5; font-family:"sans serif",tahoma,verdana,helvetica; padding:0px 7px; margin:0px; border-width:1px; border-style:none solid solid none; border-color:rgb(221,221,221)"> <p style="word-wrap:break-word; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; clear:both; height:auto; overflow:hidden"> debian7</p> </td> </tr> </tbody> </table> 2.2 对应容器启动命令: docker run -h="iframe-test" --name iframe-test -d -p 10.18.103.2:22:22 -p 10.18.103.2:3306:3306 -p 10.18.103.2:6379:6379 -p 10.18.103.2:6381:6381 -p 10.18.103.2:80:80 -p 10.18.103.2:8000:8000 -p 10.18.103.2:8888:8888 -p 10.18.103.2:443:443 debian-iframe-test /etc/rc.local docker run -h="web-test" --name web-test -d -p 10.18.103.3:22:22 -p 10.18.103.3:3306:3306 -p 10.18.103.3:6379:6379 -p 10.18.103.3:6381:6381 -p 10.18.103.3:80:80 -p 10.18.103.3:8000:8000 -p 10.18.103.3:8888:8888 -p 10.18.103.3:443:443 debian-iframe-test /etc/rc.local 3、端口映射动态扩容方案 在工作当中,一般增加新的服务时,就需新增一个端口映射,由于无法动态调整,通常都需要commit到新的镜像,然后在基于新的镜像来起容器,确实是一件很麻烦的事。 但映射的本质,是通过iptables来完成的。所以我们可以动态的用iptables增加端口映射即可,如下: 3.1 用iptables查看容器映射情况: root@qssec-iframe:~\# iptables -t nat -nvL … Chain DOCKER (2 references) pktsbytes target prot opt in out source destination 0 0 DNAT tcp -- !docker0 \* 0.0.0.0/0 0.0.0.0/0 tcp dpt:8000 to:172.17.0.3:8000 0 0 DNAT tcp -- !docker0 \* 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 to:172.17.0.3:443 0 0 DNAT tcp -- !docker0 \* 0.0.0.0/0 0.0.0.0/0 tcp dpt:3306 to:172.17.0.3:3306 0 0 DNAT tcp -- !docker0 \* 0.0.0.0/0 0.0.0.0/0 tcp dpt:6379 to:172.17.0.3:6379 0 0 DNAT tcp -- !docker0 \* 0.0.0.0/0 0.0.0.0/0 tcp dpt:6381 to:172.17.0.3:6381 3470 190K DNAT tcp -- !docker0 \* 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 to:172.17.0.3:80 0 0 DNAT tcp -- !docker0 \* 0.0.0.0/0 0.0.0.0/0 tcp dpt:8888 to:172.17.0.3:8888 41 2336 DNAT tcp -- !docker0 \* 0.0.0.0/0 0.0.0.0/0 tcp dpt:50000 to:172.17.0.3:22 \#从这里可以找到docker容器里使用的IP,然后在用iptables增加映射即可。 3.2 举例新增zabbix端口的映射: 3.2.1 单IP单容器端口扩容: iptables -t nat -A PREROUTING -p tcp -m tcp --dport 10050 -j DNAT --to-destination 172.17.0.3:10050 iptables -t nat -A PREROUTING -p tcp -m tcp --dport 10051 -j DNAT --to-destination 172.17.0.3:10051 3.2.2 单IP多容器端口扩容: iptables -t nat -A PREROUTING -p tcp -m tcp --dport 50010 -j DNAT --to-destination 172.17.0.3:10050 iptables -t nat -A PREROUTING -p tcp -m tcp --dport 50011 -j DNAT --to-destination 172.17.0.3:10051 \#另一个容器则可以规划为60010,60011,这样在zabbix监控的时候,就需要指定客户容器的端口连接了。 3.2.3 多IP多容器端口扩容: iptables -t nat -A PREROUTING -d 10.18.103.2 -p tcp -m tcp --dport 10050 -j DNAT --to-destination 172.17.0.3:10050 iptables -t nat -A PREROUTING -d 10.18.103.2 -p tcp -m tcp --dport 10051 -j DNAT --to-destination 172.17.0.3:10051 \#iptables -t nat -A PREROUTING -d 10.18.103.3 -p tcp -m tcp --dport 10050 -j DNAT --to-destination 172.17.0.4:10050 \#iptables -t nat -A PREROUTING -d 10.18.103.3 -p tcp -m tcp --dport 10051 -j DNAT --to-destination 172.17.0.4:10051 \#这样zabbix连接10.18.103.2,3的正常zabbix端口就可以了。 [2017073016235626.jpg]: http://files.jb51.net/file_images/article/201707/2017073016235626.jpg [2017073016235627.jpg]: http://files.jb51.net/file_images/article/201707/2017073016235627.jpg
还没有评论,来说两句吧...