Docker入门教程.1

Docker入门教程

一,Docker简介

​   Docker是一个开源的容器化平台,可帮助开发者轻松地创建、部署和运行应用程序。Docker使开发人员能够在一个独立的容器中打包应用程序及其依赖项,这样他们就可以轻松地将应用程序移植到任何其他环境中。


  这其中就包括环境配置难题:软件开发最大的麻烦事之一,就是环境配置。用户计算机的环境都不相同,你怎么知道自家的软件,能在那些机器跑起来?

  用户必须保证两件事:操作系统的设置,各种库和组件的安装。只有它们都正确,软件才能运行。举例来说,安装一个 Python 应用,计算机必须有 Python 引擎,还必须有各种依赖,可能还要配置环境变量。

  如果某些老旧的模块与当前环境不兼容,那就麻烦了。开发者常常会说:“它在我的机器可以跑了”(It works on my machine),言下之意就是,其他机器很可能跑不了。

环境配置如此麻烦,换一台机器,就要重来一次,旷日费时。很多人想到,能不能从根本上解决问题,软件可以带环境安装?也就是说,安装的时候,把原始环境一模一样地复制过来。

使用Docker的主要优点:

  • 1.便于部署:由于Docker容器可以在任何支持Docker的平台上运行,因此应用程序可以轻松地在不同的环境中部署和运行。
  • 2.隔离性:Docker容器提供了隔离的运行环境,使得应用程序可以在独立的环境中运行,从而避免了依赖冲突和其他问题。
  • 3.可移植性:Docker容器可以轻松地从一个平台移植到另一个平台,从而使应用程序在不同的平台上运行变得更加容易。
  • 4.安全性:Docker容器提供了安全性隔离,使得应用程序和它的依赖项可以在受保护的环境中运行,从而减少了潜在的安全风险。



二,Docker和虚拟机的区别

​   在现代云计算环境中,虚拟化技术是一项十分重要的技术,它可以提供更高的资源利用率和更快的部署速度。而近年来,Docker的兴起也引起了广泛的关注。那么,Docker和虚拟机之间有什么区别呢?


  1.基本原理的不同:(1)虚拟机技术是通过在物理服务器上安装虚拟化软件(如VMware、KVM等)来创建和管理虚拟机。每个虚拟机都运行着一个完整的操作系统,它们彼此之间是相互隔离的。虚拟机的创建和启动需要较长的时间,并占用较多的系统资源。

(2)而Docker则采用了一种不同的虚拟化技术,称为容器化。容器是一种轻量级的虚拟化技术,相对于虚拟机来说,容器只包含应用程序运行所需的最低限度的操作系统和库文件。这使得容器具备了更快的启动速度和更高的资源利用率。

  2.资源消耗的不同:(1)在虚拟机环境中,每个虚拟机都需要独立的操作系统,因此需要占用较多的系统资源。每个虚拟机都需要分配一定的CPU、内存和磁盘空间。(2)相比之下,Docker的容器共享宿主机的操作系统,不需要额外的操作系统运行,因此在资源消耗方面更加高效。它们可以在同一台宿主机上并行运行,共享宿主机的资源,使得资源利用率更高。

  3.生态系统的不同:(1)虚拟化技术已经有很长的历史,拥有成熟的生态系统和广泛的支持。有很多第三方厂商提供了各种虚拟化相关的解决方案和工具。(2)相比之下,Docker是相对较新的技术,但也有一个快速发展的生态系统。有大量的开源项目和商业解决方案,为Docker提供了丰富的支持和工具。

  4.隔离性的不同:(1)虚拟机提供了较好的隔离性,每个虚拟机运行在独立的环境中,相互之间不会产生影响。这使得虚拟机可以运行不同版本的操作系统和应用程序,提供更好的兼容性。(2)Docker容器在隔离性方面相对较弱,它们共享宿主机的操作系统,容器之间可以相互访问和影响。这使得容器更适合运行相互兼容和相互依赖的应用程序。




三,基本原理和概念

Docker的三个基本概念

  • 镜像(Image)
  • 容器(Container)
  • 仓库(Repository)

  简单来说,Docker的image可以理解是一个只读的静态模板,类似于我们在装系统的时候用到的.iso文件;而container则相对而言是一个动态的instance,或者说可以理解为我们装好了系统之后的某一台计算机,可以开机,关机,重启等等,也可以被格式化(删除)。如果我们想在另一台计算机上复现我这台计算机的系统,则可以ghost一个新的镜像,然后去安装(虽然这种操作通常不行,因为底层硬件的驱动可能不匹配)。

(1)镜像(image):

操作系统分为内核和用户空间。对于Linux而言,内核启动后,会挂载root文件系统为其提供用户空间支持。而Docker镜像(Image),就相当于是一个root文件系统。Docker设计时,就充分利用Union FS的技术,将其设计为分层存储的架构
镜像构建时,会一层层构建,前一层是后一层的基础。每一层构建完就不会再发生改变,后一层上的任何改变只发生在自己这一层。

(2)容器(Container):

镜像和容器的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的类,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等 。
容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间。前面讲过镜像使用的是分层存储,容器也是如此。
按照Docker最佳实践的要求,容器不应该向其存储层内写入任何数据 ,容器存储层要保持无状态化。所有的文件写入操作,都应该使用数据卷(Volume)、或者绑定宿主目录,在这些位置的读写会跳过容器存储层,直接对宿主(或网络存储)发生读写,其性能和稳定性更高。

(3)仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。我们可以把构建后的镜像上传到服务器,从而可以在任何地方使用到这个镜像。一个Docker Registry中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。




四,Docker 的用途

Docker 的主要用途,目前有三大类。

(1)提供一次性的环境。 比如,本地测试他人的软件、持续集成的时候提供单元测试和构建的环境。

(2)提供弹性的云服务。 因为 Docker 容器可以随开随关,很适合动态扩容和缩容。

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

五,Docker的安装

请参考我后续的教程。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值