Docker实践01-docker介绍

1、引入

开发工作中为了能够快速的在一个电脑设备上快速的使用某个功能,例如为了在Windows系统上快速使用Linux等软件,我们可以安装VMware虚拟换软件,然后在VMware软件上安装Linux,此时就可以实现在Windows电脑上“寄生”出另外一个电脑,而且这个虚拟的电脑功能与真实的电脑性能虽然有差距但是运行基本功能还是达到要求。

通过VMware我们可以很轻松的将虚拟出来且装有Linux系统的“电脑”,快速的复制到另外的真实物理机上,且他们之间是隔离的,一台挂掉,不会影响另外一台

上面说的这些VMware其实就是使用“虚拟化”技术实现的,它不仅可以虚拟出一个硬件设备,而且还可以做到多个设备的相关隔离等功能,功能真的很强大

但是它依然有不够优秀的一面,例如,当我们需要在一个真实的物理机上虚拟出多个MySQL数据库时,此时我们就需要使用VMware软件虚拟出多个“物理机”,然后在这些“物理机”上安装操作系统,然后再安装MySQL数据库,通俗一点说:如果需要2个MySQL来完成主从,那么就需要安装2个虚拟的“物理机”,此时加上真实的物理机,就有3个,它们这个3个“电脑”在共用CPU,所以此时性能就会下降很多

上述的问题,可以归纳为:为了能够对软件层面的虚拟化技术,通过VMware先虚拟化出“物理机”,然后再安装需要的软件。

这样的方式最大的问题在于:性能较差

为了解决上述问题,现在已经较为流行的方式是“Docker”,它依然能够做到对软件层面的虚拟化,但是并没有虚拟化“物理机”,也不需要安装新系统,而是共用“宿主机”的操作系统,所以这样即可以提供功能,还可以提高性能。

2、容器

2.1、容器的简介

  • 容器是一个应用层抽象,用于将代码和依赖资源打包在一起。
  • 多个容器可以在同一台机器上运行,共享操作系统内核,但各自作为独立的进程在用户空间中运行。
  • 与虚拟机相比,容器占用的空间较少(容器镜像大小通常只有几十兆),瞬间就能完成启动。

在这里插入图片描述

2.2、容器和虚拟机

  • 虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统。 然后我们再用这个操作系统安装和运行软件
  • 容器虚拟化的是操作系统而不是硬件,所有的容器是共享同一套操作系统资源的

在这里插入图片描述
在这里插入图片描述

3、docker简介

docker是什么?

  • Docker 是世界领先的软件容器平台
  • Docker 能够自动执行重复性任务,例如搭建和配置开发环境,从而解放了开发人员以便他们专注在真正重要的事情上:构建杰出的软件
  • Docker容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。

在这里插入图片描述

4.Docker 的三个基本概念

4.1 镜像(images):一个特殊的文件系统

操作系统分为内核和用户空间。对于 Linux 而言,内核启动后,会挂载 root 文件系统为其提供用户空间支持。而 Docker 镜像(Image),就相当于是一个 root 文件系统。

Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。

镜像不包含任何动态数据,其内容在构建之后也不会被改变。

Docker 设计时,就充分利用 Union FS 的技术,将其设计为分层存储的架构。 镜像实际是由多层文件系统联合组成。

镜像构建时,会一层层构建,前一层是后一层的基础。每一层构建完就不会再发生改变,后一层上的任何改变只发生在自己这一层。

比如,删除前一层文件的操作,实际不是真的删除前一层的文件,而是仅在当前层标记为该文件已删除。

在最终容器运行的时候,虽然不会看到这个文件,但是实际上该文件会一直跟随镜像。

因此,在构建镜像的时候,需要额外小心,每一层尽量只包含该层需要添加的东西,任何额外的东西应该在该层构建结束前清理掉。

分层存储的特征还使得镜像的复用、定制变的更为容易。甚至可以用之前构建好的镜像作为基础层,然后进一步添加新的层,以定制自己所需的内容,构建新的镜像。

4.2 容器:镜像运行时的实体

镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等 。

容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间。前面讲过镜像使用的是分层存储,容器也是如此。

容器存储层的生存周期和容器一样,容器消亡时,容器存储层也随之消亡。因此,任何保存于容器存储层的信息都会随容器删除而丢失

按照 Docker 最佳实践的要求,容器不应该向其存储层内写入任何数据 ,容器存储层要保持无状态化。

所有的文件写入操作,都应该使用数据卷(Volume)、或者绑定宿主目录,在这些位置的读写会跳过容器存储层,直接对宿主(或网络存储)发生读写,其性能和稳定性更高。

数据卷的生存周期独立于容器,容器消亡,数据卷不会消亡。因此, 使用数据卷后,容器可以随意删除、重新 run,数据却不会丢失。

4.3 仓库:存放镜像文件的地方

镜像构建完成后,可以很容易的在当前宿主上运行,但是, 如果需要在其他服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry 就是这样的服务。

一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。

所以说,镜像仓库是 Docker 用来集中存放镜像文件的地方,类似于我们之前常用的代码仓库。

通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本

我们可以通过<仓库名>:<标签>的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以latest 作为默认标签。

这里补充一下 Docker Registry 公开服务和私有 Docker Registry 的概念:

Docker Registry 公开服务是开放给用户使用、允许用户管理镜像的 Registry 服务。

一般这类公开服务允许用户免费上传、下载公开的镜像,并可能提供收费服务供用户管理私有镜像。

最常使用的 Registry 公开服务是官方的Docker Hub ,这也是默认的 Registry,并拥有大量的高质量的官方镜像,网址为:hub.docker.com

在国内访问 Docker Hub 可能会比较慢,国内也有一些云服务商提供类似于 Docker Hub 的公开服务。

除了使用公开服务外,用户还可以在本地搭建私有 Docker Registry 。Docker 官方提供了 Docker Registry 镜像,可以直接使用做为私有 Registry 服务。

开源的 Docker Registry 镜像只提供了 Docker Registry API 的服务端实现,足以支持 Docker 命令,不影响使用。但不包含图形界面,以及镜像维护、用户管理、访问控制等高级功能。

4.4 一句话总结

镜像:已经打包好的 Docker 应用,有点类似于一个程序的安装包。

镜像仓库:存储镜像的服务器

容器:有了镜像我们就可以创建容器了,容器就是运行着的镜像,一个镜像可以同时创建多个容器,容器之间的隔离的。
在这里插入图片描述

4.5 Docker 的优点

由于 Docker 与主机共享内核,所以有以下优势:

1、速度更快

​ Docker不停地给大家宣传,“虚拟机需要数分钟启动,而Docker容器只需要50毫秒”。

2、更加轻量

​ 虚拟机中每个都是一套独立的系统,这就使得每个虚拟机都非常大,而 Docker 使用了分层的技术,不同的镜像之间可以同享相同的层,这使得容器尺寸很小。

3、更节省资源

​ 启动一个虚拟机,就要启动它内部的操作系统,这非常消耗资源,一台电脑上同时开启3~10个虚拟机电脑就已经完全跑不动了。

​ 而 Docker 是共享主机内核,所以启动一个 Docker 就和启动一个普通的程序一样,所以我们可以同时在电脑上开启上千个 Docker 容器。

Docker 还有以下优点

在这里插入图片描述

  • 一致的运行环境:Docker 的镜像提供了除内核外完整的运行时环境,确保了应用运行环境一致性,从而不会再出现“这段代码在我机器上没问题啊”这类问题。

  • 更快速的启动时间:可以做到秒级、甚至毫秒级的启动时间。大大的节约了开发、测试、部署的时间。

  • 弹性伸缩,快速扩展:善于处理集中爆发的服务器使用压力。

  • 迁移方便:可以很轻易的将在一个平台上运行的应用,迁移到另一个平台上,而不用担心运行环境的变化导致应用无法正常运行的情况。

  • 持续交付和部署:使用 Docker 可以通过定制应用镜像来实现持续集成、持续交付、部署。

  • 组建微服务架构:通过多个容器,一台机器可以跑多个服务,因此在本机就可以模拟出微服务架构。

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值