1.Docker 是什么
2. 容器技术与虚拟化技术的比拟
3.Docker 能做什么
4.Docker 的根本组成和架构图解
5.Docker 的装置步骤
6.Docker 为什么要比 VM 虚拟机快
1.Docker 是什么
在答复 docker 是什么之前,咱们先来看看 为什么 docker 会呈现:
假如咱们当初正在开发一个我的项目,咱们应用本人的工作机进行开发,开发环境具备某些特定的配置 。其它开发人员各自工作机上的开发环境也 各有不同 。咱们 正在开发的利用依赖于以后咱们电脑上的配置 。此外 公司还有各种部署环境 (dev,test,pre,prod), 咱们不心愿 因为这些开发环境而重复进行创立服务器环境的配置,请问?
如果确保利用能在这些服务器上顺利运行?而且在部署过程中不呈现令人头疼的版本,配置问题。
对于这一系列部署环境,如何只进行一次配置而不是频繁地反复配置?
答案就是 应用容器 。Docker 对于上述问题,给出了一个标准化的解决方案———— 零碎平滑移植,容器虚拟化技术。
配置环境步骤繁琐,十分麻烦,每台机器都要配置一次 。所以软件 能不能自带环境装置 ?换句话说,装置的时候,把原始环境也复制过去,这样就能解决每台机器须要配置一遍的问题,也解决了“ 在我的电脑上能跑,在你的电脑上不行”的问题。
之前配置一个利用的运行环境,须要 装置各种软件 ,JDK/RabbitMQ/MySQL/Redis 等等, 每一个配置都须要工夫进行装置,而且还得留神版本,在本机 windows/mac 上装置完之后,在服务器 linux 还得装置,移植是十分麻烦的。
Docker 的次要指标是 ”Build,Ship and Run Any App,Anywhere”,也就是通过对用户 App 及环境的 一次构建 ,让用户 APP(也能够是一个数据库等利用)及其环境可能做到 ” 一次镜像,处处运行 “。它次要 解决了运行环境和配置问题,有助于整体公布的容器虚拟化技术。
Docker 将利用打成镜像,通过镜像成为容器运行在 Docker 下面的实例,而 Docker 容器在工作操作系统都是统一的,只须要一次配置好环境,换到别的机子上就能够一键部署,大大简化了操作。
2. 容器技术与虚拟化技术的比拟
传统虚拟机技术:
其实虚拟机技术就是一种带环境装置的技术。
虚拟机能够在 一个操作系统上运行另一个操作系统,比方在 win11 外面运行 Linux。而且被运行的零碎毫无感知,看上去就和实在零碎一样。对于 win11 来说,虚拟机就是一个一般文件,不须要了能够删掉,对其余局部毫无影响。
WIN 11 | VMWare | CentOs | 各种配置 + 软件 | 虚拟机实例 |
---|
毛病:
资源占用多
冗余步骤多
启动速度慢
容器虚拟机技术
因为虚拟机存在上述那些毛病,Linux 倒退出了另一种虚拟化技术。
容器只须要软件工作所须要的资源库,其它一律不须要,零碎因而变得更轻量级并保障部署在任何环境中的软件都能始终如一地运行。
3.Docker 能做什么
Docker 的指标:一次构建、随处运行。
3.1)更疾速的利用交付和部署
传统的开发实现之后,还须要提供 一堆安装程序和配置阐明文档 ,装置部署后还要依据配置文档进行繁冗的配置。Docker 化之后 只须要交付大量的镜像文件 ,在正式环境加载镜像并运行即可,利用装置配置在镜像外面曾经内置好, 大大节俭了配置部署工夫。
3.2)更便捷的降级和扩缩容
随着微服务的倒退,大量的微服务会在 Docker 里运行,每个 Docker 容器将变成一块“积木”,利用的降级和扩容将会变得非常容易。
3.3)更简略的零碎运维
利用容器化运行后,生产环境运行的利用与开发,测试环境的利用高度一致 ,容器会将应用程序相干的环境齐全封装起来。 不会因为操作系统的不一致性给利用带来影响,产生其它的 bug。
3.4)更高效的计算资源利用
Docker 是 内核级虚拟化 ,其不像传统的虚拟化技术一样 须要额定的 Hypervisor 反对 ,所以在 一台物理机上能够运行很多个容器实例,可大大晋升物理服务器的 CPU 和内存的利用率。
4.Docker 的根本组成和架构图解
Docker 有以下几个重要的概念:
镜像 (image):镜像是一个 只读的模板,能够用来创立很多容器。镜像就像JAVA 中的类一样,而 docker 容器实例就相似于 java new 进去的对象。
容器 (container):Docker 利用容器独立运行利用, 利用程序运行在容器外面,容器外面有一个虚拟化的环境,容器就是用镜像创立运行的实例。
仓库 (repository): 相似于 maven 仓库,是集中寄存镜像文件的场合。
5.Docker 的装置步骤
目前,CentOS 仅发行版本中的内核反对 Docker。Docker 运行在 CentOS 7 (64-bit)上,要求零碎为 64 位、Linux 零碎内核版本为 3.8 以上,这里选用 Centos7.x。
咱们能够依据官网的装置流程来执行:https://docs.docker.com/engin…,只不过配置镜像仓库须要留神一下,要设置成国内镜像。
5.1)卸载旧版本
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
5.2)yum 装置 gcc 相干
yum -y install gcc
yum -y install gcc-c++
5.3)装置须要的软件包
yum install -y yum-utils
5.4)设置 stable 镜像仓库
官网:
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
咱们设置为国内镜像:
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
5.5)更新 yum 软件包索引
yum makecache fast
5.6)装置 DOCKER CE
yum -y install docker-ce docker-ce-cli containerd.io
5.7)启动 docker
systemctl start docker
5.8)测试
docker version
docker run hello-world
当咱们运行 run 命令的时候,咱们会先查看本机有没有这个镜像,有的话间接运行,没有的话去镜像仓库里拉取镜像,再进行运行。
6.Docker 为什么要比 VM 虚拟机快
(1)docker 有着比虚拟机更少的形象层
因为 docker 不须要 Hypervisor(虚拟机)实现硬件资源虚拟化 , 运行在 docker 容器上的程序间接应用的都是 理论物理机的硬件资源。因而在 CPU、内存利用率上 docker 将会在效率上有显著劣势。
(2)docker 利用的是宿主机的内核, 而不须要加载操作系统 OS 内核
当新建一个容器时,docker 不须要和虚拟机一样从新加载一个操作系统内核。它 只须要必要的操作系统文件 ,就能够间接启动。 进而防止引寻、加载操作系统内核返回等比拟费时费资源的过程 , 当新建一个虚拟机时, 虚拟机软件须要加载 OS, 返回 新建过程是分钟级别的 。而 docker 因为间接利用宿主机的操作系统, 则省略了返回过程, 因而 新建一个 docker 容器只须要几秒钟。
Docker | 虚拟机 | |
---|---|---|
操作系统 | 与宿主机共享 OS | 宿主机 OS 上独立运行虚拟机 OS |
存储大小 | 小,便于存储传输 | 大,须要操作系统全副文件 |
运行性能 | 简直无额定性能损失 | 操作系统的额定 CPU 耗费 |
移植性 | 灵便,轻便,一致性高 | 轻便,与虚拟化技术耦合度高 |
部署速度 | 速度快 | 较慢 |