博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Docker端口映射
阅读量:4955 次
发布时间:2019-06-12

本文共 2533 字,大约阅读时间需要 8 分钟。

 

为什么要端口映射?
在启动容器时,如果不配置宿主机器与虚拟机的端口映射,外部程序是无法访问虚拟机的,因为没有端口。
端口映射的指令是什么?
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命令查看
出现6379/tcp的表示宿主机并没有打开与虚拟机的端口映射。 
出现0.0.0.0:3306->3306/tcp表示宿主机的3306端口映射到了虚拟机的3306端口。
也可以使用docker port NAME查看端口映射情况。
表示虚拟机的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多容器映射规划方案

 

 

 

 

主机名称

ssh映射

mysql映射

nginx映射

redis映射

redis-test

51000

22

51001

3306

51004

80

51002

6379

51005

8000

51003

6381

51006

8888

   

scheduler-test

52000

22

52001

3306

52004

80

52002

6379

52005

8888

52003

6381

52006

8000

   

​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

容器开放端口

操作系统

iframe-test

10.18.103.2

22 3306 80 8000 8888 443 6379   6381

debian7

web-test

10.18.103.3

22 3306 80 8000 8888 443 6379   6381

debian7

​​

转载于:https://www.cnblogs.com/williamjie/p/9915036.html

你可能感兴趣的文章
6个SQL Server 2005性能优化工具介绍
查看>>
nginx启动、关闭命令、重启nginx报错open() "/var/run/nginx/nginx.pid" failed
查看>>
day14 Python 内置函数、匿名函数和递归函数
查看>>
BZOJ 3097 Hash Killer I
查看>>
UINavigationController的视图层理关系
查看>>
html阴影效果怎么做,css 内阴影怎么做
查看>>
宏观经济
查看>>
译:面试投行的20个Java问题
查看>>
综合练习:词频统计
查看>>
BZOJ1026: [SCOI2009]windy数
查看>>
ASP.NET应用程序和ASP.NET网站所共有的文件: App_Browsers 等
查看>>
ASP.NET杂货店实战视频 VS2010+SQL2008 三层架构设计开发讲解
查看>>
样板操作数
查看>>
64位UBUNTU下安装adobe reader后无法启动
查看>>
动态缓存技术之CSI,SSI,ESI
查看>>
mac 上将.pem文件转为.pub文件
查看>>
整理下心情
查看>>
iTextSharp带中文转换出来的PDF文档显示乱码
查看>>
阶乘因式分解(一)
查看>>
qt学习记录-----3.信号与槽的问题
查看>>