Docker虚拟化是虚拟化技术解决方案中的一种,轻量级、高性能的虚拟化技术,是目前互联网使用最广泛的虚拟化技术;

Docker虚拟化技术概念和原理

  1. Docker虚拟化技术的产物Docker容器(虚拟机|服务程序),容器技术类似集装箱机制,容器中存放了开发编写的各种软件、程序、依赖包、库文件等,容器和容器之间相互隔离的,互不影响,可以基于Docker容器技术实现虚拟化;
  2. 传统虚拟化和Docker虚拟化分层结构图如下:
  3. 传统虚拟化和Docker虚拟化如图对比特点如下:

    传统虚拟化:Server-Host OS-VMM(虚拟化软件)-Guest OS-Nginx服务;
    Docker虚拟化:Server-Host OS-VMM(虚拟化软件)-Nginx服务(Nginx容器);

  4. 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(一)相关推荐

  1. docker原理介绍以及部署使用

    docker原理介绍以及部署使用 1. docker简介 2. docker架构概念 3. docker安装部署 3.1 安装环境 3.2 安装步骤 4. docker使用 4.1 镜像管理 4.2 ...

  2. Docker Centos 7.X部署Tomcat 并且修改Server.xml配置文件方案 并设置时区 只要十一步

    我用的是腾讯云 Centos 7.3版本,使用Docker最好使用7.x以上版本 1.拉取镜像 docker pull tomcat:8 2.创建容器并且挂载webapps的目录(我这里将本地端口映射 ...

  3. Docker学习笔记--1.Docker原理、容器

    Docker的安装 Docker的基本构成 Docker架构图 镜像(image): 1 Docker 镜像(Image)就是一个只读的模板.镜像可以用来创建 Docker 容器,一个镜像可以创建很 ...

  4. Docker安装和容器部署服务

    文章目录 1. Docker是什么? 1.1 旧的解决方案? 1.2 新的解决方案? 1.3 Docker容器 VS 虚拟机技术 2. 如何安装? 2.1 安装步骤 2.1.1 移除旧的docker版 ...

  5. Jenkins基础:Jenkinsfile使用实例:14:使用docker.image进行容器部署

    在上一篇文章中我们介绍了在Jenkinsfile中镜像推送至本地私库或者dockerhub的方法,这篇文章将继续介绍如何使用docker.image将容器运行起来. 环境准备 本文使用Easypack ...

  6. kubernetes中mysql乱码_在kubernetes中部署tomcat与mysql集群-Go语言中文社区

    在kubernetes中部署tomcat与mysql集群之前必须要有以下这些基础: 1. 已安装.配置kubernetes 2. 集群中有tomcat与mysql容器镜像 3. 有docker基础 具 ...

  7. Docker启动tomcat容器部署java web应用详细过程

    1.由于docker拉取tomcat镜像速度非常慢,可以在网易云镜像中心获取镜像地址 docker pull hub.c.163.com/library/tomcat:latest 下载成功后,查看下 ...

  8. Docker Compose部署项目到容器-基于Tomcat和mysql的项目yml配置文件代码

    场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...

  9. Docker Compose部署项目到容器-基于Tomcat和mysql的商城项目(附源码和sql下载)

    场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...

最新文章

  1. java soap附件_java - 附件在SoapUI中工作,但在Java中不能使用SAAJ API吗? - 堆栈内存溢出...
  2. 在虚拟主机中无法实现缩放等交互
  3. 关于C++模版的连接错误问题
  4. 激光SLAM学习--移动机器人技术系列课(智东西)
  5. python根据BM25实现文本检索
  6. Java多线程学习四十:如何写一个必然死锁的例子
  7. 平面设计素材|现代色彩风格的海报设计
  8. yii2 html转换,能够将yii2的api以html文件导出,以及相关的测试
  9. mysql有没有模式,关于sql:没有数据的MySql导出模式
  10. 【bzoj4542】[Hnoi2016]大数 莫队算法
  11. 怎么让python执行完后再执行_python中两个函数顺序执行,怎么让第一个执行完了再执行第二个?...
  12. 社会保障psam卡 是什么_社会卡即服务
  13. Android————一个简单记账本(Bookkeeping)
  14. 短波信道模型--多径瑞利信道原理详解及matlab实现
  15. 基于STM32 HAL库的遥控小车
  16. c语言:模拟用户密码登录
  17. 这才叫酷!戴上这些装备喝酒你就是酒仙了(组图)
  18. FormData+Ajax文件上传
  19. 23考研总分420+上岸南京大学软件工程专硕南京大学软件工程842经验贴24考研必看
  20. bootstrapvalidator 密码验证 以及清除验证

热门文章

  1. Instruction set mismatch, PackageSetting搞出的幺蛾子
  2. 【Revit 二次开发】满应力文件解析
  3. linux hwclock硬件时钟
  4. 有货移动端DevOps-自建APM系统
  5. Java开发常见关键词集绵
  6. flv.js 插件 完成 flv 格式的视频播放
  7. photoshop第七章:图片的效果制作2
  8. 目标检测的算法有哪些?该如何入门?
  9. 附录二 基本初等函数图形及几种常用曲线
  10. 中国python之父是谁-别了!Python之父!