跳转至

Docker 历史

Docker 的作用

Docker 是一个用于开发、运输和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分开,以便您可以快速交付软件。使用 Docker,您可以像管理应用程序一样管理基础架构。通过利用 Docker 的方法来快速传输、测试和部署代码,您可以显着减少编写代码和在生产环境中运行代码之间的延迟。

Docker 的四大组成对象

在 Docker 体系里,有四个对象 (Object) 是最重要的,因为几乎所有 Docker 以及周边生态的功能,都是围绕着它们所展开的。 它们分别是:

镜像 ( Image )

什么是镜像?

所谓镜像,可以理解为一个只读的文件包,其中包含了虚拟环境运行最原始文件系统的内容。俗称 (只读镜像层)

容器 ( Container )

什么是容器?

容器就是用来隔离虚拟环境的基础设施,而在 Docker 里,它也被称为为隔离出来的虚拟环境。是基于 (只读镜像层)之上新起的(可写容器层)

数据卷 ( Volume )

什么是数据卷?
  • 文件是重要的进行数据交互的资源。在以往的虚拟机中,我们通常直接采用虚拟机的文件系统作为应用数据等文件的存储位置。然而这种方式其实并非完全安全的,当虚拟机或者容器出现问题导致文件系统无法使用时,虽然我们可以很快的通过镜像重置文件系统使得应用快速恢复运行,但是之前存放的数据也就消失了。
  • 为了保证数据的独立性,我们通常会单独挂载一个文件系统来存放数据。这种操作在虚拟机中是繁琐的,因为我们不但要搞定挂载在不同宿主机中实现的方法,还要考虑挂载文件系统兼容性,虚拟操作系统配置等问题。值得庆幸的是,这些在 Docker 里都已经为我们轻松的实现了,我们只需要简单的一两个命令或参数,就能完成文件系统目录的挂载。
  • 能够这么简单的实现挂载,主要还是得益于 Docker 底层的 Union File System 技术。在 UnionFS 的加持下,除了能够从宿主操作系统中挂载目录外,还能够建立独立的目录持久存放数据,或者在容器间共享。
  • 在 Docker 中,通过这几种方式进行数据共享或持久化的文件或目录,我们都称为数据卷 ( Volume )

网络 ( Network )

什么是网络?
  • 在 Docker 中,实现了强大的网络功能,我们不但能够十分轻松的对每个容器的网络进行配置,还能在容器间建立虚拟网络,将数个容器包裹其中,同时与其他网络环境隔离。
  • Docker 能够在容器中营造独立的域名解析环境,这使得我们可以在不修改代码和配置的前提下直接迁移容器,Docker 会为我们完成新环境的网络适配。对于这个功能,我们甚至能够在不同的物理服务器间实现,让处在两台物理机上的两个 Docker 所提供的容器,加入到同一个虚拟网络中,形成完全屏蔽硬件的效果

docker 原理

docker是怎么工作的?
  • Docker 是一个 Client-Server 结构的系统, Docker 的守护进程运行在主机上。通过 Socket 从客户端访问!
  • Docker Server 接收到 Docker-Client 的指令,就会执行这个命令!

image-20230504131258946

image-20230428143356069

image-20230430094813086