容器化之前的历史
容器与虚拟机
使用 Docker 容器的原因
容器没有来宾操作系统并使用主机的操作系统。因此,他们会在需要时共享相关的库和资源。
应用程序隔离:如果你想在一台服务器上运行多个应用程序,将每个应用程序的组件保存在单独的容器中可以防止依赖管理出现问题。
由于应用程序特定的二进制文件和容器库在主机内核上运行,因此应用程序的处理和执行速度非常快。
启动一个容器只需要几分之一秒。
容器比虚拟机轻量级且速度更快。
什么是 Docker 容器?
Docker 是一个以容器的形式将应用程序及其所有依赖项打包在一起的平台。它使用容器使应用程序的创建、部署和运行变得更加容易。Docker 在容器内绑定应用程序及其依赖项。
容器允许开发人员将应用程序及其所需的所有部分(例如库和其他依赖项)打包在一起,然后将其作为一个包发送出去。
假设您需要构建一个应用程序。为了使该应用程序可供公众使用,您需要在某个地方托管它。过去,您需要构建自己的计算机。您需要设置一个名为“server”的专用 Web 服务,它基本上是一台专用于托管网站或 Web 服务的计算机。但是,您的应用程序开始时可能只有大约 300 兆字节的大小。那么,当您的应用程序远小于 1GB 大小时,您为什么想要一个“虚拟机”,它是由虚拟化产生的虚拟化环境?
这就是“容器”的概念来解决这个问题的地方。Docker 通过以下方式完成它。不需要为每个应用程序托管每个操作系统,而是可以共享一些公共资源,并且有一种叫做“docker 引擎”的东西,它位于操作系统之上。
采用 Docker 或容器的结果是可以更快地部署或取消部署应用程序。更快地开始和停止,更快地转换到另一个“image”,更快地处理和做很多事情。
但是在开始时,您应该了解 Docker 生态系统中重要的元素和工具。
Dockerfile
Dockerfile 是一组的指令,说明如何创建新的 Docker 镜像。为基于它运行的容器设置默认值等等。它是一个文本文档,其中包含用户可以在命令行上调用以组合图像的所有命令。因此,Docker 可以通过读取 Dockerfile 中的指令自动构建镜像。
Docker Image(映像)
Docker Image 可以比作用于创建 Docker 容器的只读模板。Image是一个蓝图,可以从中启动任意数量的全新容器。没有“当前运行的命令”保存在Image中。当您启动容器时,有点像在关闭电源后启动机器。
Docker Container(容器)
它是 Docker Image 的运行实例,因为它们包含运行应用程序所需的整个包。
想象一下,您想运行一个与系统上其他所有内容隔离的命令。它应该只访问它被允许访问的资源,并且不知道机器上还有其他任何东西。在容器内运行的进程认为它是的进程,并且只能看到一个准系统的 Linux 发行版,这些内容在图像中描述。
运行容器的机器不应该过多关心里面的内容,而 dockerized 应用程序并不关心它是在Kubernetes 集群还是单个服务器上——它无论如何都能运行。
一个容器一次可以运行多个进程。您可以将许多服务打包到一个容器中,并让它们并排运行。
当一个 Docker 容器被删除时,重新启动镜像将启动一个新的容器,而不会对之前运行的容器进行任何更改——这些更改将丢失。
Docker Volume(数据卷)
容器默认不会留下任何东西。对容器所做的任何更改(假设您没有将其另存为 Image)都会在删除后立即丢失。
为了能够保存(持久化)数据并在容器之间共享数据,Docker 提出了Volume(数据卷)的概念 。很简单,Volume是默认文件系统之外的目录(或文件),并作为主机文件系统上的普通目录和文件存在。
Docker Volume使我们能够保存数据并在容器之间共享。
结论
我们希望这篇文章有助于理解 Docker 和 Docker 容器是什么以及它如何彻底改变软件开发的基本 Docker 基础。有了上面的知识,你应该对 Docker 的核心有一个深刻的了解。
关于 Docker 的更多信息可以访问该 项目的网站 ,也可以参考 官方文档。
链接:https://www.linuxmi.com/docker-container.html