容器是什么

  • 容器是一种轻量级、可移植、自包含的软件打包技术,使应用程序可以在几乎任何地方以相同的方式运行。
  • 容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架包括系统。

PS: 所以容器只是一种技术的名称

主流产品

容器技术作为一种主流技术,所以市面上也出现了多个容器技术的产品,例如业界霸主Docker以及KubernetesBuildahBuildKitContainerdLXDPodman

后续的知识将以Docker作为学习路线(资料较多),不过实际环境中建议使用Podman(命令格式兼容Docker且理论上更安全)

Docker

Docker容器是一个开源的应用容器引擎,让开发者可以以统一的方式打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何安装了docker引擎的服务器上(包括流行的Linux机器、windows机器),也可以实现虚拟化

Docker的优点

Docker能够成为容器早期的领导者,其产品设计必然是在解决了行业痛点基础上实现的,接下来我们通过对比一下采用容器与非容器的区别去找出Docker的优点。

Podman

Docker 守护进程具有 root 权限,这使它们成为攻击者的首选目标。Podman为容器提供非 root 权限,以改善您的安全状况。无 Root 容器比具有 Root 权限的容器更安全。

  • 用户可以通过Root 或非 Root 的身份运行 Podman,同时保持合规性且不影响安全性。

  • Podman 还允许用户将容器和镜像存储在不同的地方,而 Docker 镜像只能存储在本地。

总结

尽管市面上出现了很多的容器产品,但是它们的理念都离不开: 一次构建,到处运行