跳到主要内容

什么是Docker

Docker是什么?

Docker 是一个开源的容器化平台,允许开发者将应用程序及其依赖项打包成一个可移植的容器,这样就可以在任何支持 Docker 的系统上运行应用程序。与传统的虚拟化技术不同,Docker 容器使用操作系统级别的虚拟化,而不是硬件级别的虚拟化,因而更加轻量、快速和高效。

Docker与虚拟机比较

特性Docker虚拟机 (VM)
虚拟化层级操作系统级别虚拟化 (OS-level)🟢硬件级别虚拟化 (Hypervisor-level)
启动时间🟢毫秒~秒级启动分钟级启动
资源消耗🟢轻量级,占用较少资源相对较重,每个虚拟机需要完整的操作系统
性能开销🟢较小(共享宿主机内核)较大(每个虚拟机有完整的操作系统)
隔离性容器之间共享宿主操作系统内核,隔离性较弱🟢完全隔离,每个虚拟机都有独立的操作系统
可移植性🟢高(可以在任何安装 Docker 的平台运行)较低(受限于虚拟机软件的兼容性)
部署效率🟢极高(可以快速部署和迁移)较低(启动和配置时间较长)

Docker 优势:

  • 轻量级:容器不会像虚拟机那样需要完整的操作系统,只需包含应用程序及其依赖项即可。
  • 快速启动:由于没有操作系统虚拟化的开销,容器的启动时间极快,通常在几秒钟内。
  • 可移植性:Docker 容器可以在任何支持 Docker 的平台上运行,无论是开发环境、测试环境还是生产环境。
  • 高效的资源利用:容器通过共享宿主操作系统的内核,最大化地利用了宿主机的资源。

虚拟机优势:

  • 更强的隔离性:虚拟机有独立的操作系统,能够提供更强的安全隔离。
  • 兼容性强:可以运行不同操作系统,如在 Linux 上运行 Windows 虚拟机,反之亦然。

图1:运行4个业务应用的 VM 服务器

image-20250104233751211

图2:运行4个业务应用的 Docker 服务器

image-20250104233835869

Docker的架构

图1:docker 文档

image-20250104155030984

图2:来自《深入浅出Docker》

image-20250104233136577

Docker 主要由以下几个组件构成:

  1. Docker Engine(Docker 引擎)

    • Docker Daemon (dockerd):负责管理容器的生命周期,包括容器的创建、启动、停止、删除等。
    • Docker CLI (Command Line Interface):用户与 Docker 交互的命令行工具,通过它可以执行各种 Docker 命令。
    • Docker REST API:用于与 Docker 引擎进行远程通信,支持程序化管理容器和镜像。
  2. 镜像 (Image)

    • 镜像是应用程序及其依赖项的只读模板,通常是从 Docker Hub 或其他镜像仓库下载的。镜像包含了容器运行所需的操作系统文件、程序文件以及执行环境等。

    • 1panel加速镜像:

      /etc/docker/daemon.json
      {
      "registry-mirrors": [
      "https://docker.1panel.live"
      ]
      }
  3. 容器 (Container)

    • 容器是镜像的一个实例,运行时是一个隔离的进程,包含所有执行应用所需的环境。容器可以启动、停止、重启、删除等。
  4. Docker Hub

    • Docker Hub 是一个官方的公共镜像仓库,用户可以上传或下载各种镜像,也可以使用私人仓库进行存储。

      Docker Docs

  5. Docker Network

    • Docker 提供多种网络模式,容器之间可以通过 Docker 网络进行通信,支持桥接、宿主网络、容器网络等不同模式。
  6. Docker Volume

    • Docker Volume 是用于持久化容器数据的机制,容器中的数据通常存储在 Volume 中,保证即使容器被删除,数据依然可以保留。

总结

  1. Docker 通过轻量级的容器化技术,使得应用部署变得更加高效、可移植和灵活。