Docker容器设置端口映射的方法
概念
Docker 端口映射即映射容器内应用的服务端口到本机宿主机器。
#实现
当容器中运行一些网络应用,要让外部访问这些应用时,可以通过 -P 或 -p 参数两种方式来指定端口映射。
1.随机映射
使用 -P 参数时,Docker 会随机映射一个端口到内部容器开放的网络端口,如下开启一个 nginx 服务:
$ docker run -d -P nginx
e93349d539119dc48dc841e117f6388d6afa6a6065b75a5b4aedaf5fb2a051fc
$
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e93349d53911 nginx "nginx -g 'daemon ..." 11 seconds ago Up 9 seconds
使用 docker ps 看到,本地主机的 32769 端口被映射到了容器的 80 端口,这时我们通过本机浏览器访问 http://localhost:32769 就会出现 nginx 欢迎页面。
2.指定端口
使用 -p 参数时,可以指定要映射的端口,并且在一个指定的端口上只可以绑定一个容器。支持的格式有:
- IP:HostPort:ContainerPort
- IP:ContainerPort
- HostPort:ContainerPort
下面开启一个 nginx 服务,将本机 8080 端口映射到容器的 80 端口:
$ docker run -d -p 8080:80 nginx
23e725098712d061a1382f33d6fe54da23ae37597a62f8debdd3731b5f9cc4b9
$
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
23e725098712 nginx "nginx -g 'daemon ..." 8 seconds ago Up 6 seconds
使用 docker ps 看到,本地主机的 8080 端口被映射到了容器的 80 端口,这时我们通过本机浏览器访问 http://localhost:8080 就会出现 nginx 欢迎页面。
3.查看端口映射
使用 docker port 命令来查看当前映射的端口配置,也可以查看到绑定的地址。命令格式如下:
$ docker port CONTAINER [PRIVATE_PORT[/PROTO]]
容器有自己的内部网络和 IP 地址,可以使用 docker inspect + 容器ID 获取容器的具体信息。
DOCKER 给运行中的容器添加映射端口
方法一(貌似不太行,只做了DNAT,)
- 获取容器IP
将container_name 换成实际环境中的容器名
docker inspect `container_name` | grep IPAddress
- iptable转发端口
将容器的8000端口映射到docker主机的8001端口
iptables -t nat -A DOCKER -p tcp --dport 8001 -j DNAT --to-destination 172.17.0.19:8000
方法二
- 提交一个运行中的容器为镜像
docker commit containerid foo/live
- 运行镜像并添加端口
docker run -d -p 8000:80 foo/live /bin/bash
参考:docker 给运行中的容器设置端口映射
Docker容器设置端口映射的方法相关推荐
- Docker容器修改端口映射
Docker容器修改端口映射 https://zhuanlan.zhihu.com/p/94949253 对于已经建立的docker容器,需要新增容器对主机的端口映射,主要分为三种: 一:通过修改配置 ...
- 解决docker容器开启端口映射后,会自动在防火墙上打开端口的问题
解决docker容器开启端口映射后,会自动在防火墙上打开端口的问题 参考文章: (1)解决docker容器开启端口映射后,会自动在防火墙上打开端口的问题 (2)https://www.cnblogs. ...
- 解决windows系统无法对docker容器进行端口映射的问题
解决windows系统无法对docker容器进行端口映射的问题 参考文章: (1)解决windows系统无法对docker容器进行端口映射的问题 (2)https://www.cnblogs.com/ ...
- 解决Windows下无法对docker容器进行端口映射的问题
解决Windows下无法对docker容器进行端口映射的问题 在安装了一个Windows下安装了docker,并尝试在其中运行Nginx服务,但映射完毕之后,在主机的浏览器中,打开localhost: ...
- docker容器增加端口映射最佳实践(修改配置文件方式)
前言: 在日常的docker运维中,经常遇到这样一个问题:已经配置好且运行的docker容器要根据业务需要增加端口映射到宿主机,如何简单有效的解决呢? 下面以mysql容器为例,详细说明操作步骤. 一 ...
- docker(8):docker容器的端口映射
docker(8):docker容器的端口映射 cker的端口映射,能保证在外部网络 访问 同一设备上不同容器时候 不会因为端口问题产生冲突. docker 可将容器对外提供服务的端口映射到 host ...
- win10 docker 容器修改端口映射
通常容器生成后是无法通过docker界面或docker命令去修改端口映射的,以下是通过修改配置文件的方式实现: 第一步:在powershell执行以下命令找到容器hash值 docker inspec ...
- docker 改host_所以到底该如何修改 docker 容器的端口映射!!!
|问题背景 docker run -d -p 9999:8080 -i --name tomcat7 tomcat:7创建容器时,指定了端口映射(-p) 如果容器运行之后发现端口需要改怎么办? 当前是 ...
- docker 镜像修改的配置文件自动还原_所以到底该如何修改 docker 容器的端口映射!!!...
|问题背景 docker 创建容器时,指定了端口映射(-p) 如果容器运行之后发现端口需要改怎么办? 当前是访问 9999 端口 |删除原有容器,重新创建新的容器 |删除容器 docker |重新创建 ...
最新文章
- 当postgres的主键序列不同步时,如何重置?
- jedisPool.getResource()方法长时间无响应并且不报错
- vim 删除多行_Vim神器的五个高效插件,新老司机别错过!
- 李洪强iOS开发Swift篇—02_变量和常量
- 如何简单快速的修改Bootstrap
- 在freemarker文件中,html标签获取后台的值
- Asp.Net MVC4入门指南(8):给数据模型添加校验器
- 浅谈Java垃圾回收
- 【Linux的开胃小菜】基于Ubuntu搭建内网DNS服务器
- 1068 万绿丛中一点红 Python实现
- 冯诺依曼计算机的英文简称,冯诺依曼计算机,von neumann machine,音标,读音,翻译,英文例句,英语词典...
- uniapp使用艺术字
- 【unity 3d】--- 瞄准镜效果
- [HTML5点滴]客户端存储那些事
- Linux内核配置选项详解
- Hive sql 常用命令2
- R语言作图好看的秘籍:RColorBrewer调色板详解
- GB/T35590-2017移动电源CMA检测报告,移动电源新国标检测
- Java物联网项目中,运行SPringBoot脚手架,运行失败问题
- 7-3 最长公共前后缀
热门文章
- 佛家养生100条(经典) - 1
- WIN32_LEAN_AND_MEAN
- css3绘制环形_css画圆,如何用纯css实现一个动态画圆环效
- yolov5——train.py代码【注释、详解、使用教程】
- 栈应用之进制转换(C语言)
- mysql服务哪里启动_mysql服务怎么启动和关闭?
- 欲穷千里目,踏上云平台,更上一层楼
- 吉布斯现象的matlab实现,吉布斯现象matlab实现和傅里叶级数
- 字符串强制转化数字java_js 字符串转换成数字的三种方法
- Android 适配18:9 和 16:9 屏幕尺寸比例的问题