社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  docker

Docker 的 2020,实 "鼠" 不易!

Java技术栈 • 3 年前 • 261 次点击  

Java技术栈

www.javastack.cn

关注阅读更多优质文章



上一篇:滚蛋吧,2020!!!

元旦你们出去嗨,栈长在家撸文章,惨惨惨…

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

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

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

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

Docker 简介:

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

我们可以将 Docker 理解为一个轻量级的沙盒,Docker 容器完全使用沙盒机制,每个容器内都有其独立运行的环境和组件,容器之间是相互隔离互不影响的,也可以进行容器间的通信。

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

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技术栈微信公众号,栈长将第一时间跟进最新动态。你也可以在后台回复:动态,获取栈长整理的更多往期热门好玩的技术资讯。

参考:

  • https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.20.md#deprecation
  • https://dev.to/inductor/wait-docker-is-deprecated-in-kubernetes-now-what-do-i-do-e4m

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






关注Java技术栈看更多干货



元旦你们出去嗨,栈长在家撸文章,惨惨惨…

各位老铁,求个在看吧…
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/105732
 
261 次点击