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

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

参考:

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

近期热文推荐:

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

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

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

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

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

觉得不错,别忘了随手点赞+转发哦!

Docker 的 2020,实 "鼠" 不易!的更多相关文章

  1. Docker总结2020

    1. docker ps docker exec -it php7 /bin/bash 设置文件权限: chmod -R sign_tp5/ 重启nginx命令: nginx -s reload    ...

  2. Amazing 2020

    Amazing 2020 Intro 2020 转眼即逝,2020 是比较艰辛的一年,因为疫情原因,很多人的工作以及生活都多多少少受到了一些影响. 引用网上盛传的一句话--2020 实"鼠& ...

  3. 盘点 Java 开发 2020 年发生的几件大事,你必须得知道!

    2021 年了,在过去的一年 Java 软件开发行业都发生了哪些重大事件呢? 这篇栈长带大家回顾一下,其实在元旦的<滚蛋吧,2020>也略有介绍,这篇就更加详细的总结一下. 1.Java ...

  4. Docker容器技术

    Docker介绍 什么是容器 Linux容器是与系统其他部分隔离开的一系列进程,从另一个系统镜像运行,并由该镜像提供支持进程所需的全部文件. 容器镜像包含了应用的所有依赖项,因而在从开发到测试再到生产 ...

  5. Docker 基本核心原理

    Docker内核知识 namespace资源隔离 namespace的6项隔离 NameSpace 系统调用参数 隔离内容 UTS CLONE_NEWUTS 主机名与域名 IPC CLONE_NEWI ...

  6. docker基本元素和底层实现

    docker是轻量级的操作系统虚拟化解决方案 优点 1.基于操作系统层面 2.启动速度快(秒级) 3.资源利用率高 4.性能高.易管理 docker有3大基本要素 分别是 1.镜像:只读模板,用来创建 ...

  7. 如何在windows 7 上使用docker

    在window7上面本来是支持使用docker的, 但是我们可以通过安装docker toolbox来实现在windows7上使用docker. 参考网址: https://docs.docker.c ...

  8. Docker入门-常用命令

    Docker镜像操作 Docker运行容器前需要本地存在对应的镜像,如果本地不存在该镜像,Docker会从镜像仓库下载该镜像. 获取镜像 从Docker镜像仓库获取镜像的命令是docker pull. ...

  9. win10安装docker,VSCode管理docker

    背景 docker:随着技术的不断迭代,开发环境的配置与部署越来越重要.Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linu ...

随机推荐

  1. JZOJ8月10日提高组反思

    JZOJ8月10日提高组反思 T1 没想到怎么打 就去打暴力了 本来想拿个30不错了 结果\(AC\)了 话说回来,数据也挺小的 T2 不AC便爆0 就一个数据点 给不给打暴力的人活了 正解是状压DP ...

  2. 解决IDEA更新为最新的2020.3版后,右键运行居然没有以xml形式运行的Run显示

    一.前言 个人一直喜欢用IDEA最新版,结果更新后,发现TestNg批量执行,选中testng.xml右键没Run,如下图: 刚开始以为是配置错误呢,下载了2018.2版本的IDEA,还能正常运行,于 ...

  3. 5.1 Spring5源码--Spring AOP源码分析一

    目标: 1.什么是AOP, 什么是AspectJ, 2. 什么是Spring AOP 3. Spring AOP注解版实现原理 4. Spring AOP切面原理解析 一. 认识AOP 1.1 什么是 ...

  4. PyQt(Python+Qt)学习随笔:formLayout的layoutLabelAlignment 属性

    一.引言 Qt Designer的表单布局(formLayout)中,layoutLabelAlignment 用于控制表单布局中标签的水平对齐方式(包括垂直和水平方向两个方向).如图: 此属性实际对 ...

  5. scrapy爬取微信小程序社区教程(crawlspider)

    爬取的目标网站是: http://www.wxapp-union.com/portal.php?mod=list&catid=2&page=1 目的是爬取每一个教程的标题,作者,时间和 ...

  6. burp添加插件

    困扰了我很长时间的验证码,虽然迫使我早就找到了相关文章,但是由于一些原因,就推迟了验证码相关的东西.今天趁着晚上,好好的安装一下 下载地址 https://github.com/bit4woo/reC ...

  7. 半夜删你代码队 Day2冲刺

    一.每日站立式会议 1.站立式会议 成员 昨日完成工作 今日计划工作 遇到的困难 陈惠霖 整理任务 了解相关网页设计 任务安排有的不合理,需改进 侯晓龙 学习了解相关知识 尝试写第一个实例子 无 周楚 ...

  8. uniapp-vuex实现tabbar提示点

    底部入口栏的红点提示是app中常见的功能,或者说是必要功能,通常用来提醒用户去查看或操作某个模块内容. 看项目性质如果需要比较多并且灵活的提示,则需要用到长连接技术. 1.红点提示是根据接口返回的数据 ...

  9. GaussDB(DWS)应用实践丨负载管理与作业排队处理方法

    摘要:本文用来总结一些GaussDB(DWS)在实际应用过程中,可能出现的各种作业排队的情况,以及出现排队时,我们应该怎么去判断是否正常,调整一些参数,让资源分配与负载管理更符合当前的业务:或者在作业 ...

  10. 牛客练习赛 73 D

    题目链接 离别 离线算法+线段树 容易发现当我们枚举右端点r时,符合条件的左端点是一段连续的区间 我们可以用队列来维护这个连续区间的左右端点 当枚举到端点\(i\)时,将下标\(i\)插入到队列\(q ...