Docker原理及容器部署Tomcat(一)
Docker虚拟化是虚拟化技术解决方案中的一种,轻量级、高性能的虚拟化技术,是目前互联网使用最广泛的虚拟化技术;
Docker虚拟化技术概念和原理
- Docker虚拟化技术的产物Docker容器(虚拟机|服务程序),容器技术类似集装箱机制,容器中存放了开发编写的各种软件、程序、依赖包、库文件等,容器和容器之间相互隔离的,互不影响,可以基于Docker容器技术实现虚拟化;
- 传统虚拟化和Docker虚拟化分层结构图如下:
- 传统虚拟化和Docker虚拟化如图对比特点如下:
传统虚拟化:Server-Host OS-VMM(虚拟化软件)-Guest OS-Nginx服务;
Docker虚拟化:Server-Host OS-VMM(虚拟化软件)-Nginx服务(Nginx容器); - Docker虚拟化采用集装箱机制,Docker虚拟化技术跟货轮信息举例类比:
Docker 容器(软件、库文件、服务可以各个类型的服务)= 集装箱(货物、物品);
Docker Engine = 大货轮(船);
HOST OS(硬件设备)= 大海;
Docker常用命令
#查看Docker镜像;
docker images#删除Docker镜像;(强制删除-f参数)
docker rmi 6759d91a032b#查看运行中的容器;
docker ps#查看运行、停止、关闭的所有容器;
docker ps -a#进入Docker容器系统bash终端;(exit退出即可)
docker exec -it 4f3a529813ce /bin/bash#停止Docker容器;
docker stop 4f3a529813ce#启动Docker容器;
docker start 4f3a529813ce#删除Docker容器;
Docker rm 4f3a529813ce(-f强制删除运行中的容器);#删除所有的Docker容器;
for i in `docker ps|awk 'NR>=2 {print $1}'`;do docker rm -f $i ;done
docker ps -aq|xargs docker rm -f
docker rm -f `docker ps -aq`
docker rm -f $(docker ps -aq)
Docker仓库源更新
docker默认连接的国外官方镜像,访问时快时慢,大多时候获取速度非常慢,为了提升效率修改为国内仓库源,提升拉取镜像的速度。
将以下整串代码粘贴至linux命令行中,执行位置无影响:
cat>/etc/docker/daemon.json<<EOF
{"registry-mirrors":["https://registry.docker-cn.com"]
}
EOF
systemctl restart docker.service
执行效果如下:
Docker容器部署Tomcat
Docker官网要求部署Docker引擎(虚拟化软件)的底层Host OS的Linux系统内核版本3.8+,最早期Windows操作系统不支持Docker虚拟化部署,新版的Windows系统可以支持Docker;
查看内核:uname -a
以下开始正式部署:
1.基于CentOS7.x(7.0+)部署Docker引擎服务,指令如下:
#YUM安装Docker引擎服务;
yum install docker* -y#查看Docker软件是否安装;
rpm -qa|grep docker#启动Docker引擎服务;
systemctl restart docker#查看Docker引擎服务进程;
ps -ef|grep docker
引擎服务配置完毕,并且启动完成,如图所示:
2.Docker虚拟化属于C/S(Client/Server)模式,Server-Engine服务,Client-Docker命令工具,查看docker客户端和服务端版本号:docker version;
3.Docker虚拟化技术实施之前,了解三个概念:Docker镜像、Docker容器、Docker仓库;
Docker镜像:Docker镜像类似Linux ISO镜像文件,底层模板,镜像中存储的各种软件、程序、LIB库、依赖环境等,Docker镜像结构分层(层次)的结构,每一层存储不同的软件和功能,镜像是只读的,不能被修改;
Docker容器:Docker容器基于Docker镜像运行之后实体,Docker容器的底层是镜像,Docker容器所需文件、软件可以从镜像层中读取,没有镜像,就没有Docker容器,镜像是静止的,容器是活动的(进程和程序的关系);
Docker仓库:Docker仓库是用于存储Docker镜像文件的地方,仓库分为公共和私有仓库,企业生产环境推荐自建私有仓库(安全、稳定、速度快);
4.如果通过Docker引擎运行Docker容器,首先从公共仓库下载Docker镜像,基于Docker镜像再启动容器(默认Docker引擎从Docker国外官网下载镜像文件);
1)从docker官网仓库搜索tomcat|nginx|redis镜像;
[root@VM_0_2_centos ~]# docker pull docker.io/tomcat
[root@VM_0_2_centos ~]# docker pull docker.io/nginx
[root@VM_0_2_centos ~]# docker pull docker.io/redis
2)查看本地服务器的镜像列表;(从远程仓库下载的)
[root@VM_0_2_centos ~]# docker images
3)基于Docker镜像启动Tomcat容器并映射(-i interactive交互、-t tty终端、-d daemon后台运行):
将宿主机系统的8080端口映射到容器的8080端口;(第一个端口宿主机监听的,第二个端口是容器内部服务端口)
[root@VM_0_2_centos ~]# docker run -p 8080:8080 -itd docker.io/tomcat:latest
4)查看Docker tomcat容器的运行状态;
[root@VM_0_2_centos ~]# docker ps
5)查看Docker tomcat容器的IP地址;
[root@VM_0_2_centos ~]# docker inspect 5bcda8027f78 |grep -i ipaddr
6)如何访问创建Tomcat容器(Tomcat软件服务,监听8080端口);
内部检查该容器是否可以访问,如果不能访问,浏览器中也会无法访问,属于前置检查步骤:
[root@VM_0_2_centos ~]# wget 172.17.0.3:8080
访问提示404:
解决办法:
1.进入当前容器的bash命令行:
[root@VM_0_2_centos ~]# docker exec -it 5bcda8027f78 bash
2.打印当前目录:会发现当前目录多了个webapp.dist目录:
root@5bcda8027f78:/usr/local/tomcat# ls
3.检查webapps目录,发现目录中是空的,因为该目录为空所以会显示404,所以此时我们可以将webapps重命名区分开,将webapps.dist重命名为webapps即可。
root@5bcda8027f78:/usr/local/tomcat# mv webapps webapps2
root@5bcda8027f78:/usr/local/tomcat# mv webapps.dist/ webapps
root@5bcda8027f78:/usr/local/tomcat# exit
4.此时再次内部检查是否可以ping通 :
[root@VM_0_2_centos ~]# wget 172.17.0.3:8080
打印数据为以下内容,表示可以访问了,请求非404,并返回状态为200。可使用浏览器访问了。
7) 访问映射后的tomcat:
若出现页面加载显示404:确认上述操作无误,多刷新访问该页面即可
Docker原理及容器部署Tomcat(一)相关推荐
- docker原理介绍以及部署使用
docker原理介绍以及部署使用 1. docker简介 2. docker架构概念 3. docker安装部署 3.1 安装环境 3.2 安装步骤 4. docker使用 4.1 镜像管理 4.2 ...
- Docker Centos 7.X部署Tomcat 并且修改Server.xml配置文件方案 并设置时区 只要十一步
我用的是腾讯云 Centos 7.3版本,使用Docker最好使用7.x以上版本 1.拉取镜像 docker pull tomcat:8 2.创建容器并且挂载webapps的目录(我这里将本地端口映射 ...
- Docker学习笔记--1.Docker原理、容器
Docker的安装 Docker的基本构成 Docker架构图 镜像(image): 1 Docker 镜像(Image)就是一个只读的模板.镜像可以用来创建 Docker 容器,一个镜像可以创建很 ...
- Docker安装和容器部署服务
文章目录 1. Docker是什么? 1.1 旧的解决方案? 1.2 新的解决方案? 1.3 Docker容器 VS 虚拟机技术 2. 如何安装? 2.1 安装步骤 2.1.1 移除旧的docker版 ...
- Jenkins基础:Jenkinsfile使用实例:14:使用docker.image进行容器部署
在上一篇文章中我们介绍了在Jenkinsfile中镜像推送至本地私库或者dockerhub的方法,这篇文章将继续介绍如何使用docker.image将容器运行起来. 环境准备 本文使用Easypack ...
- kubernetes中mysql乱码_在kubernetes中部署tomcat与mysql集群-Go语言中文社区
在kubernetes中部署tomcat与mysql集群之前必须要有以下这些基础: 1. 已安装.配置kubernetes 2. 集群中有tomcat与mysql容器镜像 3. 有docker基础 具 ...
- Docker启动tomcat容器部署java web应用详细过程
1.由于docker拉取tomcat镜像速度非常慢,可以在网易云镜像中心获取镜像地址 docker pull hub.c.163.com/library/tomcat:latest 下载成功后,查看下 ...
- Docker Compose部署项目到容器-基于Tomcat和mysql的项目yml配置文件代码
场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...
- Docker Compose部署项目到容器-基于Tomcat和mysql的商城项目(附源码和sql下载)
场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...
最新文章
- java soap附件_java - 附件在SoapUI中工作,但在Java中不能使用SAAJ API吗? - 堆栈内存溢出...
- 在虚拟主机中无法实现缩放等交互
- 关于C++模版的连接错误问题
- 激光SLAM学习--移动机器人技术系列课(智东西)
- python根据BM25实现文本检索
- Java多线程学习四十:如何写一个必然死锁的例子
- 平面设计素材|现代色彩风格的海报设计
- yii2 html转换,能够将yii2的api以html文件导出,以及相关的测试
- mysql有没有模式,关于sql:没有数据的MySql导出模式
- 【bzoj4542】[Hnoi2016]大数 莫队算法
- 怎么让python执行完后再执行_python中两个函数顺序执行,怎么让第一个执行完了再执行第二个?...
- 社会保障psam卡 是什么_社会卡即服务
- Android————一个简单记账本(Bookkeeping)
- 短波信道模型--多径瑞利信道原理详解及matlab实现
- 基于STM32 HAL库的遥控小车
- c语言:模拟用户密码登录
- 这才叫酷!戴上这些装备喝酒你就是酒仙了(组图)
- FormData+Ajax文件上传
- 23考研总分420+上岸南京大学软件工程专硕南京大学软件工程842经验贴24考研必看
- bootstrapvalidator 密码验证 以及清除验证