小白了解Docker容器技术

一、什么是Docker👑

1.1 理解Docker容器的简单概念🎈

        有一个最常见的例子来很好的帮我们简单了解Docker容器技术:

        当我们在一台计算机中配置好了环境,花费了极大的时间和精力成功开发部署好了一个应用。准备尝试在不同操作系统、不同环境下部署这个应用时,我们需要在目标环境中安装依赖库、框架等,但是这些环境可能与开发环境不同,会发现有些 bug 并未在开发过程中被发现,运行时可能出现的不兼容性问题,导致运行失败。

Docker容器正是解决这样的问题的,通过Docker容器化技术,将应用程序及其依赖项打包成一个独立的容器,容器中包含了应用程序运行所需的所有依赖项和环境,通过容器化技术,可以在不同操作系统、不同环境中运行应用程序,避免了不兼容性问题。

1.2 更加详细的理解Docker容器🎈 

        想要更加详细的去理解Docker容器的作用,我们得分清楚一个项目中什么是不可移植的什么是可移植的。用一种形象的例子来说明:假设运行我们写好的一个Python项目我们需要什么?

  1. 系统(不可移植)
  2. 环境(不可移植)
  3. 代码(可移植)
  4. 依赖/配置文件(可移植)

        我们可以这样子去理解Docker容器,它将通常情况下不可移植的却必不可缺的东西打包为一个容器,使得他们和代码、配置文件等一样可以移植。从而使得整个项目成为了一个独立的、可以放在任何一个地方运行容器。

        当然可以移植的项我们可以选择不一起打包,毕竟代码什么的是可以到处传的,当我们在任何系统任何环境下只要可以进入Docker容器,那么我们就相当于在原始环境中,自然就可以运行我们的传过来的代码。

1.3 Docker容器的精彩远不止如此🎈

 Docker容器如此出名,拥有的当然不只是一个简单的容器作用:

  • 更高效的利用系统资源:由于容器不需要进行硬件虚拟以及运行完整操作系统等额外开销,Docker 对系统资源的利用率更高。无论是应用执行速度、内存损耗或者文件存储速度,都要比传统虚拟机技术更高效。因此,相比虚拟机技术,一个相同配置的主机,往往可以运行更多数量的应用。
  • 更快速的启动时间:传统的虚拟机技术启动应用服务往往需要数分钟,而 Docker 容器应用,由于直接运行于宿主内核,无需启动完整的操作系统,因此可以做到秒级、甚至毫秒级的启动时间。大大的节约了开发、测试、部署的时间。
  • 持续交付和部署:对开发和运维(DevOps)人员来说,最希望的就是一次创建或配置,可以在任意地方正常运行。Docker完全可以做到这一点。
  • 更轻松的迁移:由于 Docker 确保了执行环境的一致性,使得应用的迁移更加容易。Docker 可以在很多平台上运行,无论是物理机、虚拟机、公有云、私有云,甚至是笔记本,其运行结果是一致的。因此用户可以很轻易的将在一个平台上运行的应用,迁移到另一个平台上,而不用担心运行环境的变化导致应用无法正常运行的情况。
  • 更轻松的维护和扩展:Docker 使用的分层存储以及镜像的技术,使得应用重复部分的复用更为容易,也使得应用的维护更新更加简单,基于基础镜像进一步扩展镜像也变得非常简单。此外,Docker 团队同各个开源项目团队一起维护了一大批高质量的 官方镜像,既可以直接在生产环境使用,又可以作为基础进一步定制,大大的降低了应用服务的镜像制作成本。

二、镜像、仓库和容器👑

2.1 Docker容器有三🎈

        Docker包括了三个基本概念:

  • 镜像Image):Docker镜像①它是一个特殊的文件系统,提供Docker容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。②它不包含 任何动态数据,其内容在构建之后也不会被改变。③它是使用分层存储技术Union FS 来存储的。④它是通过Dockerfile来构建的,Dockerfile是一个文本文件,通过其描述的指令,Docker可以自动化构建出一个Dokcer镜像,并将其保存在Docker仓库中。

  • 仓库Repository):Docker仓库①它是一个用于存储、管理和分享Docker镜像的平台。②它分为公共仓库和私有仓库,公共仓库由Docker官方提供,私有仓库由用户自己搭建存储镜像。③通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本的镜像。

  • 容器Container):Docker容器①它和镜像之间是 实例 的关系。这样解释:假设python中有一个类(class)Person被创建,它的初始化参数为def __init__(self, name, age),那么当我们编译代码person1 = Person("Alice", 19),person2 = Person("Jon", 24)时,person1和person2就是两个不同的实例。②镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。

2.2 容器与虚拟机的区别🎈

Docker容器和虚拟机咋一看非常相似,如果了解虚拟机的伙伴,肯定会惊讶,这不就是一个轻量级的虚拟机吗?!其实并非如此,他们区别其实很大,最主要区别在于他们的架构和资源利用方式不一样:

        Docker容器是基于操作系统级别的虚拟化技术,它允许在单个操作系统实例中运行多个容器,每一个容器都可以拥有之间的应用程序、库和文件系统,并且它们都可以共享宿主机的操作系统的内核和硬件资源。因此占用的资源相对较少,启动和停止速度也非常快。

        虚拟机则是基于硬件级别的虚拟化技术,它通过在物理服务器上运行多个虚拟机来实现资源的隔离和共享。多个虚拟机它们并非在同一个操作系统下,每一个虚拟机都有之间的操作系统和应用程序,并且它们需要使用虚拟化层来模拟硬件资源,所以占用的资源相对较多,启动和停止的速度比较慢。 

这也是为什么Docker容器为什么更加轻量、灵活和高效的原因。最后再上一张详细的对比图:

NOTE:简而言之,言而简之:Docker容器使得我们写好的程序可以在任意地方运行,而不用担心不兼容问题,更不需要再次配置环境。 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大气层煮月亮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值