Docker 三大核心组件详解:镜像、容器、仓库(附分层原理 + 示例)

前言

学习 Docker,镜像、容器、仓库 是必须吃透的三大核心概念,三者构成了 Docker 完整的工作闭环:镜像用于构建、容器用于执行、仓库用于分发。本文结合原理图解、通俗讲解与实操示例,帮你彻底搞懂三者的定义、关系及底层分层机制,适合 Docker 入门进阶学习。

一、Docker 整体工作逻辑

Docker 的核心流转逻辑可以概括为:构建镜像 → 运行容器 → 分发仓库,三者关系如下:

  • 镜像(Images):构建,静态模板;
  • 容器(Container):执行,镜像运行后的动态实例;
  • 仓库(Repositories):分发,存储、共享镜像的平台。

简单理解:镜像是模板,容器是运行起来的应用,仓库是存放模板的云端仓库。

二、Docker 镜像(Images):静态只读的应用模板

1. 什么是 Docker 镜像

容器能够取代传统虚拟机,核心原因就是 Docker 镜像技术 。Docker 镜像本质是一个压缩包,包含完整操作系统的文件、依赖、运行环境、应用程序,和本地开发 / 测试环境系统完全一致。核心特点:

  1. 分层架构:镜像由多层文件系统堆叠而成;
  2. 只读不可修改:镜像本身是静态文件,运行时不能直接修改;
  3. 一次构建,到处运行,是创建容器的基础模板。

2. 镜像分层原理(重点)

Docker 镜像采用分层存储机制,每一层只记录变更的文件,下层文件可被多个上层镜像复用,极大节省存储空间。

  • 基础层:操作系统内核、基础系统(如 Ubuntu、CentOS);
  • 中间层:安装的依赖、软件(如 VIM、Nginx);
  • 顶层:应用程序及配置;
  • 所有镜像层均为只读,不可修改。

举个例子:基于 Ubuntu 系统,依次安装 VIM、Nginx,就会形成多层镜像:

镜像修改逻辑:修改镜像内文件,不会直接覆盖原文件,而是在上层生成新文件,屏蔽下层旧文件;最终系统看到的是多层合并后的完整视图。

3. Dockerfile 构建镜像示例

Dockerfile 是构建镜像的脚本,每一条RUN命令会生成一层镜像。

冗余写法(生成 3 层镜像)
复制代码
FROM centos
RUN yum -y install wget
RUN wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz"
RUN tar -xvf redis.tar.gz
优化写法(合并为 1 层,减少镜像层数)
复制代码
FROM centos
RUN yum -y install wget && \
    wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz" && \
    tar -xvf redis.tar.gz

优化原则:尽量合并RUN指令,减少镜像层数,缩小镜像体积。

三、Docker 容器(Container):镜像运行的动态实例

1. 镜像与容器的关系

  • 镜像:静态,只读模板,相当于软件安装包;
  • 容器:动态,镜像运行后的实例,相当于运行中的软件;
  • 容器由只读镜像层 + 顶部可读写容器层组成。

2. 容器分层结构

容器在镜像的所有只读层之上,新增一层可读写的容器层:

  • 镜像层:全部只读,共享复用;
  • 容器层:唯一可读写,所有修改、新增、删除操作都在此层完成;
  • 生命周期:容器消亡,容器层数据随之销毁。

3. 容器核心特性

  1. 可被创建、启动、停止、删除、暂停;

  2. 可理解为一个或一组相互依赖的服务;

  3. 启动容器核心命令:

    后台运行容器,images为镜像名称/ID

    docker run -d images

四、Docker 仓库(Repositories):镜像的存储分发平台

Docker 仓库是用来存放、共享、分发 Docker 镜像 的平台,分为公共仓库 和私有仓库两大类。

1. 公共仓库

  • 官方仓库:Docker Hub (https://hub.docker.com),全球最大镜像仓库,拥有海量官方镜像(Nginx、MySQL、Redis 等),可免费下载;
  • 国内公共源:阿里云镜像仓库、网易蜂巢等,用于加速国内镜像拉取。

2. 私有仓库

企业内部使用,存放自定义镜像,保障安全与内网访问,常见工具:

  • Harbor(VMware 开源,企业级私有仓库);
  • Docker Registry(Docker 官方简易私有仓库)。

五、总结

  1. 镜像:静态只读分层模板,构建应用环境,Dockerfile 用于构建镜像;
  2. 容器:镜像运行实例,拥有独立可读写层,实现应用运行;
  3. 仓库:镜像存储平台,分为公共 / 私有仓库,实现镜像分发共享。

三者配合,完美实现 Docker Build(构建)、Ship(分发)、Run(运行) 的核心流程,也是容器化部署的基础。

相关推荐
木头左9 小时前
【Nginx】内网服务源 IP 白名单实战:动态域名解析放行网段 + 端口接管零改造
运维·nginx·白名单·反向代理
禁默10 小时前
启元 Q1 二次开发实践:Ubuntu 部署与仿真验证,从 PrimeConsole 到 ROS 2 Humble + RViz
linux·运维·ubuntu
skywalk816311 小时前
把 去也网站 从 Ubuntu 搬到 FreeBSD:一次 Service Jail + nginx 的部署实录
linux·运维·nginx·ubuntu·freebsd
翔云12345612 小时前
RocksDB中,客户端每写入一次数据,需要访问几次磁盘
运维·数据库·mysql
爱莉希雅&&&13 小时前
GitLab 完整学习笔记
linux·运维·服务器
java_logo13 小时前
Docker 部署 EmulatorJS:轻松搭建浏览器复古游戏平台
游戏·docker·容器·复古游戏·轩辕镜像·emulatorjs·红白机
小杨爱科普14 小时前
制造业上自动化改造,改造部分的专利到底归谁
运维·经验分享·自动化
吴声子夜歌14 小时前
Kubernetes权威指南——网络原理(一)
网络·容器·kubernetes
方便面不加香菜15 小时前
Docker Container --容器及容器的操作案例详解
运维·docker·容器
AR-26710-19 小时前
Linux Day32——实操五类资源告急排查
linux·运维