文章目录
一、Docker容器学习目标:
- 掌握Docker基础知识,能够理解Docker镜像和容器之间的概念
- 完成Docker的安装与启动掌握Docker镜像与容器相关命令
- 掌握Tomcat、Nginx等软件的常用应用的安装
- 掌握Docker迁移与备份相关命令
- 能够运用Dockerfifile编写创建容器的脚本
- 能够搭建与使用Docker私有仓库
二、Docker简介
1. 什么是虚拟化
- 在计算机中,虚拟化(英文: Virtualization)是一种资源管理技术,是将计算机的各种实体资源(如: 服务器、网络、内存及存储等)予以抽象、转化后呈现出来, 打破实体间不可切割的障碍,使用户可以通过更好的方式来应用这些资源。
- 在实际的生产环境中,虚拟化技术主要用来解决高性能的物理硬件产能过剩和老的旧的硬件产能过低的重组重用,透明化底层物理硬件,从而最大化的利用物理硬件,对资源充分利用。
- 虚拟化的种类有很多,例如:
1.软件虚拟化:Vmware软件、KVM软件、VirtualBox软件等
2.硬件虚拟化: 磁盘阵列RAID、逻辑卷LVM、
3.内存虚拟化、网络虚拟化、桌面虚拟化、服务虚拟化、虚拟机等。
2 .什么是Docker
Docker是一个开源的应用容器引擎,Docker项目的目标是实现轻量级的操作系统虚拟化解决方案。Docker的基础是Linux容器(LXC)等技术。在2018年之前是不支持在Windows系统部署Docker的。用户操作Docker的容器就像操作一个快速轻量级的虚拟机一样简单。
个人理解:Docker: 集装箱 把东西封装到集装箱中,别人需要就直接给集装箱。
3.为什么选择Docker?
1)上手快
- Docker依赖于"写时复制"(copy-onwrite)模型,使修改应用程序也非常迅速,可以说达到"随心所欲,代码即改"的境界。
随后,就可以创建容器来运行应用程序了。大多数Docker容器只需要不到1秒即可启动。 - 由于去除了管理程序的开销,Docker容器拥有很高的性能,同时同一台宿主机中也可以运行更 多的容器,使用户尽可能的充分利用系统资源。
2)职责的逻辑分类 - 使用Docker,开发人员只需要关心容器中优秀的应用程序,而运维人员只需要关心如何管理容器。
- Docker设计的目的就是要加强开发人员写代码的开发环境与应用程序要部署的生产环境一致性。
- 从而降低那种"开发时一切正常,肯定时运维的问题(测试环境都是正常的, 上线后出了问题就归结为肯定是运维的问题)"。
3) 快速高效的开发生命周期 - Docker的目标之一就是缩短代码从开发、测试到部署、上线运行的周期,让你的应用程序具备可移植性,易于构建,并易于协作。
- (通俗一点说,Docker就像一个盒子,里面可以装很多物件,如果需要这些物件的可以直接将该大盒子拿走,而不需要从盒子里一件一件的取)。
4. 容器与虚拟化的比较
下面的图片比较了Docker和传统的虚拟化方式的不同之处,可见容器在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统的虚拟化则是在硬件层面实现。
总结一下就是: Docker没有独立的操作系统,使用真机的内存与操作系统。与传统的虚拟机