首页 > 解决方案 > Kubernetes 和 Docker 的关系

问题描述

Docker 和 Kubernetes 的关系本质是什么?假设在 Pod 内完成的所有 Docker 操作都会将 Pod 视为普通主机,是否安全?

例如,如果我要使用 Python Docker SDK,附加到/var/run/docker.sock并创建一个卷,这个卷是否只存在于 Pod 中?

我主要担心的是我知道 Pod 是虚拟化的,因此如果我通过 Docker 等其他虚拟化工具挖掘得太深,可能无法很好地发挥作用。

标签: dockerkuberneteskubernetes-pod

解决方案


了解每个概念的职责是什么很重要。

  • Docker 容器本质上是主机操作系统和来宾操作系统之间的边界,它允许进程独立运行(文档
  • Kubernetes是一个用于运行此类容器的编排平台(文档)。
  • 最后,Pod是一个 kubernetes 对象,它描述了如何运行 docker 容器(文档)。

有了这些知识,我们可以回答您的一些问题;

Docker 和 Kubernetes 的关系本质是什么?

Kubernetes可以像您的计算机一样运行 docker 容器,但它针对这个特定目标进行了优化。Kubernetes 也是一个抽象(或编排)层,为您处理网络能力、磁盘空间和 cpu 周期等资源。

假设在 Pod 内完成的所有 Docker 操作都会将 Pod 视为普通主机,是否安全?

Pod无论如何都不是主机。它只是对 docker 容器(或多个)应该如何运行的描述。任何生成的容器都在 Kubernetes 节点创建的虚拟空间中运行。

例如,如果我使用 Python Docker SDK,附加到 /var/run/docker.sock,并创建一个卷,这个卷是否只存在于 Pod 中?

这是您可以在本地计算机上执行的操作,虽然从技术上讲您也可以在您的节点上执行此操作,但这不是一个常见的用例。

请注意,docker 容器与任何外部因素(例如挂载或网络套接字)隔离(仅在运行时发生,并且不会更改容器本身的状态)。但是,您可以配置容器(使用 Pod 对象)以在集群上重新创建相同的条件。


推荐阅读