Docker学习笔记(一)
【摘要】 Docker是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。Docker 是一个用于开发,交付和运行应用
Docker学习笔记
概述
什么是Docker
Docker是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
Docker 是一个用于开发,交付和运行应用程序的开放平台。借助 Docker,我们可以与管理应用程序相同的方式来管理基础架构。通过利用Docker的方法来快速交付,测试和部署代码,您可以大大减少编写代码和在生产环境中运行代码之间的延迟。
Docker是虚拟机吗
非也非也,Docker是容器引擎,容器并不是虚拟机,它是极其轻量的。将我们自己开发的程序安装到Docker镜像中,Docker镜像就类似于一个py文件,它需要Docker的运行时(类似于Python解释器)运行,被运行的当镜像被运行时,即创建了一个镜像的实例,一个实例就是一个进程。创建实例的过程,并不像虚拟机那样需要经历开机的过程,而是一个短暂到可以忽略的过程。
Docker被禁用了吗
Docker被禁止使用只是广大自媒体夸大宣传了而已,事实上,Docker被禁用的只是被美国列入“实体清单”的企业。再进一步,就算是被列入了“实体清单”,也是可以使用Docker的,因为Docker 从 17.03 版本之后分为 CE(Community Edition: 开源社区版) 和 EE(Enterprise Edition: 闭源企业版),被禁用的也仅仅是企业版,社区版依然可以被使用。
我国国内像阿里、腾讯这样的云厂商,都提供了全套的Docker服务,这些也是不被禁止的。
Docker被弃用了吗
最近Kubernetes(简称k8s)高调宣布将在2021年下半年的版本中彻底移除Docker,引发了社区的热烈讨论。k8s是Google开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理,是一个开源的,用于管理云平台中多个主机上的容器化的应用,k8s的目标是让部署容器化的应用简单并且高效,k8s提供了应用部署、规划、更新、维护的一种机制。
在讲k8s弃用Docker前,需要先讲一段反垄断的历史:
在容器领域,Docker无疑是老大,为了防止docker一家独大,docker当年的实现被拆分出了几个标准化的模块,标准化的目的是模块是可被其他实现替换的,不由任何一个厂商控制。docker由 docker-client ,dockerd,containerd,docker-shim,runc组成。其中,最基本的,与容器的运行息息相关的,就是containerd。
k8s与Docker都是以containerd作为运行时,当然,k8s的运行时是可选的,过去,还有一个运行时,叫做Docker,而运行时Docker与k8s的接口并不是完全兼容的,当时,Google开发了一个dockershim的模块,用以实现对运行时Docker的支持。慢慢的,不兼容的地方越来越多,于是Google打算放弃使用dockershim,而是直接与containerd对接。现在的k8s,同时支持Docker和containerd作为容器运行时,2021年下半年,Google将移除所有的dockershim代码,而移除dockershim就意味着不能再使用运行时Docker。
前面我一直在强调运行时Docker,没错,k8s弃用的并不是Docker本身,而是k8s中的运行时Docker。Docker依然是还是那个Docker,可以正常使用,而且,因为镜像的运行时都containerd,使用Docker创建的镜像完全可以在k8s中无障碍的使用。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)