「K8S 生态周报」内容主要包含我所接触到的 K8S 生态相关的每周值得推荐的一些信息。欢迎订阅知乎专栏「k8s生态」。
在之前的 K8S 生态周报| Docker v20.10.0-beta1 发布 一文中,我曾为你介绍过 Docker v20.10.0-beta1 发布相关的信息,但是并没有具体介绍 Docker v20.10 版本的具体功能特性等细节。
Docker v20.10 版本,变化非常的大。提供了 CGroup v2 的支持,增强了 rootless 模式的支持,双栈日志,更灵活的内置 DNS 等,我在这个版本中也花费了很多时间。详细的变更,我会在 v20.10 正式发布后再进行介绍。欢迎大家进行测试和反馈,目前已经收到了一些反馈的建议。我们会尽快修正并发布下个版本。
正如我当时承诺的那样,作为 2020 年最后一篇周报,我来在本篇周报中详细介绍下 Docker v20.10 版本。
Docker v20.10 发布于 2020 年 12 月 8 日,是自 Docker v19.03 (2019 年 7 月)后发布的首个大版本。你可以直接通过以下命令来自动化的安装 Docker v20.10。
➜ ~ curl -fsSL https://get.docker.com |sh
Docker v19.03 是没有 cgroup v2 支持的,但自从 Fedora 31 开始,这成为了 Fedora 上的默认 cgroup 版本。在 Docker v20.10 发布之前,Fedora 31 及以上用户,需要将系统的 cgroup 设置为 v1 才能正常运行 Docker 。
其实这里面涉及到了大量的修改,包括 runc, containerd 直到 Docker 都添加了 cgroup v2 的支持,此功能才能真正给用户使用。
在此过程中,我也发现了 runc v1.0-rc91 中隐藏的 bug ,会导致 Docker 无法正常通过增加 --privileged
参数以特权模式运行容器。后来对 runc 进行了修改,发布了 runc v1.0-rc92 ,至此才使得 Docker 中的 cgroup v2 特性得以顺利完成。
关于此处更详细的内容,我在 《K8S 生态周报| runc v1.0-rc92 发布》 中已做了详细介绍,感兴趣的小伙伴可以看看。
Docker 有个一直被人诟病的点,就在于 docker daemon 必须是以 root 权限来启动,这样才可以使用它的全部特性。这也就意味着,凡是可以操作 docker daemon 的用户,也就有机会获取操作系统的 root 权限。
我们在 Docker v19.03 版本中提供了实验性的 rootless mode 的支持,允许用户无需 root 权限即可运行 docker daemon 。这大大提升了系统的安全性。但当时还处于实验阶段,有部分功能缺失。
我想趁此次 Docker v20.10 发布,正式为你介绍下 Docker 的 rootless mode ,并且,它已经达到 GA 从实验性毕业了,并且也提供了很多功能。
rootless mode 是在用户名称空间中运行 docker daemon 和容器,完全不需要 root 权限。
你可以通过以下命令安装 Docker rootless 模式:
➜ ~ curl -fsSL https://get.docker.com/rootless | sh
或者直接通过 Docker 官方的 RPM/DEB 包进行安装。安装完之后,通过 systemctl
管理 Docker 服务即可。
➜ ~ systemctl --user start docker
更多关于 rootless mode 的详细用法及最佳实践,请参考 Docker 官方文档:以非 root 用户运行 docker daemon
Docker v18.06 开始实验性的添加了 RUN --mount=type=cache
该特性可用于在构建过程中,保留包管理器的缓存文件。
之后在 v18.09 中又增加了 RUN --mount=type=ssh
和 RUN --mount=type=secret
用于在构建过程中,传递密钥或者用户凭证等私密信息,以防止泄漏等。这些高级特性,在我之前的文章 《进阶:Dockerfile 高阶使用指南及镜像优化》 曾详细介绍过。
这些特性非常有用,基本涵盖了你构建镜像时关于安全性方面的绝大多数的需求。大家如果感兴趣,欢迎随时与我交流,后续我也可能会再写相关的文章进行介绍。
更多关于此版本的变更,可以参考其 ReleaseNote
关于此版本有两个格外需要注意的信息:
更多关于此版本的信息,请参考其 ReleaseNote 。
etcd 想必大家不会陌生,我在「K8S 生态周报」中也曾多次介绍它,这里就不再赘述了。
感兴趣的小伙伴可查看官方公告: CNCF 宣布 etcd 正式毕业
再次恭喜 etcd !
今年是 2020 年阳历的最后一天了, 感谢大家的关注和支持!
接下来,我将会发布一份 “2020 年 K8S 生态演进报告” 与你分享在 2020 年 K8S 生态相关不容错误的信息,以及 2021 年 K8S 生态相关的展望及发展方向,敬请期待!
欢迎订阅我的文章公众号【MoeLove】