Docker 的 2020,实 "鼠" 不易!

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 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:

image.png

依旧写着禁止 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 的变更日志:

image.png

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


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


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


Docker 和 k8s 有什么关系?


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

image.png

在 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技术栈" 原创,原创实属不易,转载、引用本文内容请注明出处,禁止抄袭、洗稿,请自重,尊重他人劳动成果和知识产权。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
6月前
|
运维 网络协议 Linux
Docker网络_docker 网络,来看看这份超全面的《Linux运维面试题及解析》
Docker网络_docker 网络,来看看这份超全面的《Linux运维面试题及解析》
|
6月前
|
监控 Linux 虚拟化
【经典问题】Docker是怎么工作的?
【1月更文挑战第26天】【经典问题】Docker是怎么工作的?
|
Java Linux 虚拟化
为什么要学习Docker?有什么用处呢?看完你就想学了
为什么要学习Docker?有什么用处呢?看完你就想学了
148 0
为什么要学习Docker?有什么用处呢?看完你就想学了
|
运维 应用服务中间件 nginx
docker好难用啊!为啥说它移植性好?
docker好难用啊!为啥说它移植性好?
68 0
|
运维 Kubernetes 负载均衡
Docker不香吗?为什么还要用k8s
Docker不香吗?为什么还要用k8s
Docker不香吗?为什么还要用k8s
|
关系型数据库 MySQL 应用服务中间件
浅谈docker&小试牛刀
浅谈docker&小试牛刀
71 0
|
存储 NoSQL 安全
让我们稍微深入理解一下 docker 的技术概念(2)
让我们稍微深入理解一下 docker 的技术概念(2)
让我们稍微深入理解一下 docker 的技术概念(2)
|
存储 安全 Linux
让我们稍微深入理解一下 docker 的技术概念(1)
让我们稍微深入理解一下 docker 的技术概念(1)
让我们稍微深入理解一下 docker 的技术概念(1)
|
存储 关系型数据库 MySQL
Docker学习笔记(一)初遇篇
Docker学习笔记(一)初遇篇
Docker学习笔记(一)初遇篇

相关实验场景

更多