Docker 的 2020,实 "鼠" 不易!

元旦大家出去嗨,栈长在家撸文章,惨惨惨…java

没错, Docker 的 2020 年也过的不是很顺利,能够说是流年不利、命运多舛,一年发生两件大事,太折腾!git

相信你们也已经看到不少相关的报道了,但同时也有不少人被铺天盖地的信息所误解、所迷惑,不少人不清楚事实的真相,咱技术群里还有人说不要学了之类的,带着不少偏见和误解,好比:github

  • Docker 真的被禁止使用了?
  • Docker 真的被 K8S 弃用了?
  • Docker 到底还能不能用?
  • Docker 到底还要不要继续学?
  • ……

今天栈长就来总结下 Docker 的 2020,带你们来揭开这些谜团。spring

Docker 简介:docker

Docker 是如今最主流的开源容器,Docker 的核心思想是:"Build once, Run anywhere",即:一次构建,到处运行,也基本成为了如今容器的代名词。微信

咱们能够将 Docker 理解为一个轻量级的沙盒,Docker 容器彻底使用沙盒机制,每一个容器内都有其独立运行的环境和组件,容器之间是相互隔离互不影响的,也能够进行容器间的通讯。架构

更多请参考:年轻人的第一个 Docker 应用!intellij-idea

Docker 真的被禁用了?

关于 Docker 被禁的消息,其实最先在 2017 年就被禁止在 7 个国家使用了,去年的 8 月,一则 Docker 被禁的消息又袭转了朋友圈和各大技术平台,由于其主要针对的是 "实体清单" 上的公司,而许多中国公司又在实体清单上面。负载均衡

来看下最新的 Docker 服务条款:运维

https://www.docker.com/legal/docker-terms-service

最新的条款生效日期是 2020/12/14:

依旧写着禁止 Docker 在米国政府 "实体清单" 上的企业、我的使用,Docker 虽然是一个开源容器,但其自己也是一家米国公司,因此必须得遵照米国在出口方面的法律限制。

因此,若是你所在的公司不在那个实体清单上面,那彻底不用惊慌!!

那公司在这个清单上面该怎么办呢?

看 1.1 的描述,这个条款针对的是 Docker 相关网站上提供的服务,那禁用的也是 Docker 网站提供的商业服务(好比 Docker Hub、Docker EE 等),开源的版本并不受影响,然而真正用商业服务和付费版的公司又有几个呢?不得而知!反正咱们不用~

一句话再总结下:

禁止 Docker 在米国政府 "实体清单" 上的企业、我的使用在其网站上提供的商业服务

因此不用 Docker 的商业服务不就没事了,通常的公司彻底不用担忧,再不行在开源版本上拉个分支本身干或者换一个容器不就完事了。

推荐阅读:Docker 被禁?还有千千万万个 Docker 站起来!

Docker 被 K8S 弃用?

去年 12 月,又有一波关于 "K8S 弃用 Docker" 的消息开始刷屏……

Kubernetes 简介:

kubernetes,简称:K8s,是 Google 开源的一个容器编排引擎,它支持自动化部署,以及大规模、可伸缩应用容器化管理。Kubernetes 中能够建立多个容器,每一个容器里面运行一个应用实例,而后经过内置负载均衡策略实现这一组应用实例的管理、发现、访问,而这些细节都不须要运维人员进行复杂的手工配置和处理。

参考来源:百度百科

为何 K8S 弃用 Docker?

没错,来看 Kubernates 1.2.0 的变动日志:

如图所示,在弃用部分第一条就是:

如今 Docker 在 Kubelet 中的支持已经被弃用,而且会在将来的版本中完全移除,由于 Kubelet 使用了一个名叫 "dockershim" 的模块,它实现了 Docker 对 CRI 的支持,但它在 Kubernetes 社区已经出现了一些维护性的问题。咱们建议你评估并迁移容器运行时,也就是成熟的 CRI 完整实现(兼容 v1alpha1 和 v1),如今已是可用状态。

总而言之就是维护问题,建议迁移到新的容器运行时。

Docker 和 k8s 有什么关系?

首先须要搞清楚 Docker 在现有 Kubernetes 架构中的做用,来看下 Kubernetes 的架构图:

在 Kubernetes 架构中,每一个 Kubernetes 节点都与控制面板进行通讯,Docker(或者其余容器运行时)仅用于在实际主机中运行应用程序,各个节点上的 kubelet 经过获取元数据,并执行 CRI(Container Runtime Interface,即容器运行时 API 接口)以在该节点上进行容器的建立/删除操做。

Kubernetes 只能与CRI 进行通讯,而不能直接用 Docker API 进行通讯,Docker 又并不支持 Kubernetes 提供的 CRI,因此以前使用 Kubernetes 就只能经过 "dockershim" 提供的桥接服务来转换 Docker API 和 CRI,但因为维护性问题,Kubernetes 最终仍是弃用了 dockershim 这一桥接服务。

Docker 被弃用后怎么办?

其实也不用慌,CRI 运行时有两种实现方案:

  • containerd
  • CRI-O

containerd 就是从 Docker 分出去的开源项目,而且提供的 CRI 功能也是彻底由 Docker 提供的,Docker 自身也用到了 containerd,而 CRI-O 主要由 Red Hat 开发,并不依赖 Docker,因此,从 Docker 迁移到 containerd 是最好的选择。

总结

Docker 确实被禁用了,但影响的只是实体清单上的公司的 Docker 提供的商业服务,开源版本不受影响,和咱们普通开发也不要紧。

Docker 也确实被 k8s 弃用了,但还有其余的选择,好比:containerd,就是彻底兼容 Docker 的,能够继续使用 Docker 进行开发,因此对于普通开发用户来讲是不受任何影响的,但对于 k8s 管理员来讲就须要考虑迁移到新的容器运行时,毕竟在将来不久的版本中 k8s 会完全移除对 Docker 的支持。

总之, Docker 还是目前最优秀的开源容器,放心大胆用吧!

因此,不要再被误导了,咱们普通开发人员彻底不用考虑禁不由、弃用不弃用的事,该学学,该用用,吃嘛嘛香,何乐而不为呢?

但话又说回来,Docker 是家米国公司,将来开源版会不会也受影响呢?

我只能说应该不会,若是开源的都被禁,那咱们经常使用的 Java、Linux、Spring 等开源技术都不能用了?不太可能!不少人的担忧、惊慌也并不无道理,惟有开发本身的核心技术才会不用受制于人!

最后, Docker 被禁损失的是 Docker 公司和米国本身的利益,简直是搬起石头砸本身的脚,另外,Docker 也不是必须的,不用 Docker 也还有不少其余的选择,Docker 没火以前不也过的好好的,因此彻底不用惊慌。

至于 Docker 的后续发展,请持续关注Java技术栈微信公众号,栈长将第一时间跟进最新动态。你也能够在后台回复:动态,获取栈长整理的更多往期热门好玩的技术资讯。

参考:

版权申明:本文系公众号 "Java技术栈" 原创,原创实属不易,转载、引用本文内容请注明出处,禁止抄袭、洗稿,请自重,尊重他人劳动成果和知识产权。

近期热文推荐:

1.Java 15 正式发布, 14 个新特性,刷新你的认知!!

2.终于靠开源项目弄到 IntelliJ IDEA 激活码了,真香!

3.我用 Java 8 写了一段逻辑,同事直呼看不懂,你试试看。。

4.吊打 Tomcat ,Undertow 性能很炸!!

5.《Java开发手册(嵩山版)》最新发布,速速下载!

以为不错,别忘了随手点赞+转发哦!

相关文章
相关标签/搜索