INFO
Categories

一文打尽Docker

Docker 是一个开源的容器化平台,用于打包、发布和运行应用程序。通过将应用及其所有依赖打包进一个轻量级的镜像中,Docker 实现了一次构建,处处运行的目标。

但 Docker 并不是凭空产生,它基于 Linux 的以下三大核心技术:

  • Namespaces:实现进程隔离(例如网络、PID、文件系统)
  • cgroups:实现资源限制(CPU、内存等)
  • UnionFS / OverlayFS:实现镜像的分层存储

你可以把 Docker 理解为:一个将 Linux 内核功能抽象封装为容器工具集的平台。最初的Docker基于LXC,后来去除LXC转而使用自行开发的Libcontainer。

Host与Bridge两种模式的探讨

当使用–network host参数时:

容器不再拥有独立IP(docker inspect将显示空IP)
直接共享宿主机的网络栈
网络性能提升20-30%(实测延迟从3ms降至1ms)

容器(默认bridge模式):独立IP+端口映射
容器(默认host模式):直接使用主机IP

Kubernetes,从官方网站上可以看到,它是一个工业级的容器编排平台。Kubernetes 这个单词是希腊语,它的中文翻译是“舵手”或者“飞行员”。在一些常见的资料中也会看到“ks”这个词,也就是“K8s”,它是通过将 8 个字母“ubernete ”替换为“8”而导致的一个缩写。Kubernetes 为什么要用“舵手”来命名呢?大家可以看一下这张图:

这是一艘载着一堆集装箱的轮船,轮船在大海上运着集装箱奔波,把集装箱送到它们该去的地方。我们之前其实介绍过一个概念叫做 container,container 这个英文单词也有另外的一个意思就是“集装箱”。Kubernetes 也就借着这个寓意,希望成为运送集装箱的一个轮船,来帮助我们管理这些集装箱,也就是管理这些容器。

区别:Kubernetes(K8s)是一个容器编排系统,而Docker是一个用于构建、分发和运行容器的平台。 关系:它们可以协同工作,以实现更高效的应用程序部署和管理。在实际应用中,开发人员可以使用Docker来构建和打包应用程序容器,然后将其部署到Kubernetes集群中。Kubernetes和Docker之间的关系可以理解为一种互补关系,Docker位于Kubernetes的下层,为应用程序提供运行环境,而Kubernetes则位于上层,为容器化应用程序提供编排和管理功能。