Docker映射详解,没问题了!
写在前面:
小伙伴儿们,大家好!上一篇我们了解到了Docker容器的操作命令——久等了!Docker容器常用命令 今天来学习Docker端口映射!持续更新,敬请期待!
思维导图:
1,Docker映射是什么?
容器里面运行着应用,外部需要访问交互,涉及到容器里面的端口和宿主机之间的映射;
通过端口映射,我们就可以从外部访问宿主机的指定端口来访问到容器的应用;
2,如何实现Docker映射?
这里我们以Tomcat为例子,我们看看如何在外部通过Docker端口映射来访问宿主主机里面的Tomca。
2.1,下载tomcat容器镜像
下载镜像:docker pull tomcat:tag
,不加版本号的话默认是下载最新版本
查看所有镜像:docker images
,我这里是已经下载了三个版本的tomcat
2.2,创建并启动tomcat容器
创建启动tomcat容器:docker run --name tomcat1 -d tomcat :latest
, 其中-d
是表示后台运行容器,tomcat1
是容器名称,tomcat :latest
是注明版本号
查看正在运行的容器:docker ps
2.3,开放端口映射命令
映射命令:docker run --name 容器名称 -d -p (服务器端口):(Docker端口) image-name
--name
:自定义容器名,不指定时,docker会自动生成一个名称
-d
:表示后台运行容器
服务器端口
:这里的tomcat端口是8080
Docker端口
:我们任意设置一个端口号,但是前提是这个端口号不能被占用
image-name
:指定运行的镜像名称以及Tag,这里也可以用镜像ID都可以的
这个时候我们的端口以及搭建好了,我们在浏览器中输入服务器ip地址(查看命令:ip addr show
)再加上Docker端口就可以访问了。
结果,就这??
2.4,关于访问映射端口出现404问题
这个问题相信刚开始搭建的时候应该都遇到过,我查了一下原因如下:
解决办法:
我们先进入到tomcat的目录:
进入之后,修改webapps
为webapps2
或者修改webapps.dist
为webapps
就可以了
我们先来看看效果:
3,提交运行容器成为镜像
上述运行成功之后,也存在一定问题,如果不退当前容器的情况下,运行端口端口映射的tomcat是可以访问到首页的;但是,我们只是在这个容器中修改了 命名,我们重启了这个容器,修改的命名就会恢复。
为了防止恢复问题,我们自己把修改后的镜像映射成新的镜像
命令:docker commit -a=“作者名” -m=“备注” 运行时容器ID 新镜像名称
然后我们就可以用新镜像来重新访问映射端口的应用了
非常方便!
- Silverlight初级教程-动画
- WCF技术剖析之十:调用WCF服务的客户端应该如何进行异常处理
- [原创-总结]WCF技术剖析系列总结篇
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(63)-WebApi与Unity注入
- 分布式高并发下mysql数据库读写分离
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(64)-补充WebApi与Unity注入-配置文件
- 身临其境的建筑体验:3D打印和人工智能相结合的“星形胶质细胞”
- C语言真的太强大了,C几乎无处不在!
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(65)-MVC WebApi 用户验证 (1)
- 具有依赖关系的并行操作执行
- Silverlight初级教程-绘图布局
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(66)-MVC WebApi 用户验证 (2)
- 微信产品经理的妥协还是用户的需求?
- CSLA .NET 3.6支持Silverlight 2
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Go 使用标准库 net/http 包构建服务器
- 基于prometheus的监控方案
- Gin 学习之自定义服务器配置信息
- 经验总结 | 关于 reNgine 自动化网络侦查框架的国内安装与报错的解决方法
- CS学习笔记 | 24、C2lints实例演示
- CS学习笔记 | 23、malleable命令
- ASP.NET Core 基于声明的访问控制到底是什么鬼?
- scATAC-seq建库原理,质控方法和新R包Signac的使用
- R语言可视化学习笔记之ggridges包绘制山峦图
- 06 . ELK Stack + kafka集群
- 使用DockerFile构建运行GoWeb
- windows版gbc:基于enginx的组件服务器系统paas,可用于mixed web与websocket game
- 01 . RPC简介原理及用Go实现一个RPC
- 17 . Go之网络编程
- 01 . Go框架之Beego简介部署及程序流程分析