我不明白docker的好处在哪里。我遇到了对它的极大赞扬Docker
。它是轻的,与虚拟机相比,它非常快。
有人能解释一下为什么 docker 可以在没有虚拟机所必需的全部东西的情况下工作吗?毕竟,在 docker 中我们只有内核。是的,它很轻量,但软件很差。ls, cp, cd,..
我们还有其他东西吗?在其他情况下,我们需要更多软件,因此 docker 的大小也可能很大。
我错在哪里了?
答案1
Docker 容器用于将在其中运行的服务与系统其余部分隔离。从这个意义上讲,它们与 VM(虚拟机)没有区别。
您必须在容器中安装所需的服务,例如 mysql。这与使用 VM 没什么区别,只是在 VM 中您还必须安装操作系统。因此 Docker 具有巨大的尺寸优势(通常为几 GB)。
当您在 Docker 容器中运行单个服务时,您不需要完整操作系统附带的所有软件包。您只需安装运行服务所需的软件包即可。
用于创建容器的 Dockerfile 明确指定了您想要在容器中安装的内容。您可以向其中添加任何内容,就像向服务器或桌面系统添加软件包一样。
当您创建新容器时,Docker 还会“重复使用”使用相同基础容器的现有容器。例如,您的第一个容器可能占用 300MB,但具有相同基础容器的后续容器可能只占用几 MB。
如果您创建两个相同或相似的 VM,它们将始终是全尺寸的。
Docker 网站上的这篇文章解释如何构建 docker 镜像和容器。
关于 Docker 容器不需要完整操作系统的原因,请参阅https://serverfault.com/q/755607/388193