当前位置: 首页 > ds >正文

Docker 镜像、容器和 Docker Compose的区别

前言:Docker 的镜像、容器和 Docker Compose 是容器化技术的核心组件,以下是对它们的详细解析及使用场景说明。


​1、Docker 镜像(Image)​

  • ​定义​​:
    镜像是只读模板,包含运行应用程序所需的代码、依赖、环境配置等。类似于“软件安装包”。

  • ​核心特性​​:

    • ​分层存储​​:镜像由多层文件系统叠加而成,每层可通过 Dockerfile 指令(如 FROMRUNCOPY)定义,提升复用性。

    • ​只读性​​:镜像不可修改,若需更新需重新构建。

    • ​版本管理​​:通过标签(Tag)标识版本,如 nginx:1.21 或 python:3.9-slim

  • ​常用命令​​:
    # 构建镜像
    docker build -t my-app:1.0 .# 拉取镜像
    docker pull nginx:latest# 列出本地镜像
    docker images# 删除镜像
    docker rmi my-app:1.0

​2、Docker 容器(Container)​

  • ​定义​​:
    容器是镜像的运行实例,包含独立的进程、文件系统和网络空间,类似“轻量级虚拟机”。

  • ​核心特性​​:

    • ​临时性​​:默认容器停止后数据丢失,需通过卷(Volume)持久化数据。

    • ​隔离性​​:资源(CPU、内存)和网络通过命名空间隔离,可通过参数调整。

    • ​可写层​​:在镜像之上添加可写层,容器修改不影响原始镜像。

  • ​常用命令​​:
# 启动容器
docker run -d --name web -p 80:80 nginx# 查看运行中的容器
docker ps# 进入容器终端
docker exec -it web /bin/bash# 停止/删除容器
docker stop web
docker rm web

​3、Docker Compose​

  • ​定义​​:
    用于定义和运行多容器应用的工具,通过 YAML 文件(docker-compose.yml)配置服务、网络、卷等。

  • ​核心场景​​:

    • ​多服务编排​​:如同时启动 Web 服务、数据库、缓存等。

    • ​环境隔离​​:通过文件定义不同环境的配置(开发、测试)。

    • ​依赖管理​​:自动处理服务启动顺序和网络连接。

  • ​配置文件示例​​:
    version: '3'
    services:web:image: nginx:latestports:- "80:80"volumes:- ./html:/usr/share/nginx/htmldb:image: postgres:13environment:POSTGRES_PASSWORD: example
  • ​常用命令​​:
    # 启动所有服务
    docker-compose up -d# 停止并删除容器
    docker-compose down# 查看服务日志
    docker-compose logs web

4、​​使用场景对比​

​镜像​​ → 提供应用运行的基础模板。

容器​​ → 基于镜像启动的独立实例。

​Docker Compose​​ → 编排多个容器,简化复杂应用的部署。

场景镜像容器Docker Compose
​单服务运行​提供运行环境模板启动单个实例(如运行 Nginx)不适用
​多服务协作​构建各服务的镜像分别启动多个容器通过 YAML 统一管理所有服务
​开发环境配置​定义开发依赖(如 Python 环境)运行开发服务器一键启动整个开发环境(前端 + 后端 + DB)
​持续集成/交付 (CI/CD)​构建标准化应用包测试环境运行在测试流程中编排多组件测试

​5、常见问题解答​

  • ​镜像 vs 容器​​:镜像是“食谱”,容器是“做好的菜”;镜像不可变,容器是动态实例。

  • ​数据持久化​​:通过卷(Volume)或绑定挂载(Bind Mount)保存数据,避免容器删除导致数据丢失。

  • ​多环境配置​​:使用多个 Compose 文件(如 docker-compose.prod.yml)或环境变量区分不同环境。

  • ​性能优化​​:精简镜像层、使用 .dockerignore 忽略无用文件、选择合适的基础镜像(如 Alpine 版本)。


参考链接:

win10 docker,docker-compose 安装和配置 - makalo - 博客园

2025最新Docker国内可用镜像源仓库地址分享_docker_脚本之家

docker学习使用教程_docker使用教程-CSDN博客

Docker 入门教程(简明易懂、零基础篇)

http://www.xdnf.cn/news/889.html

相关文章:

  • 使用PyTorch实现图像增广与模型训练实战
  • 版本控制利器——SVN简介
  • SVN权限配置及连接指南
  • 年化112.5%,最大回撤24.3%,卡玛比率4.62 | polars因子引擎重构完成(python源代码下载)
  • android的 framework 有哪些知识点和应用场景
  • 如何修复WordPress中“您所关注的链接已过期”的错误
  • uniapp打ios包
  • Spark_SQL
  • 第十四届蓝桥杯 2023 C/C++组 有奖问答
  • 算法 | 鲸鱼优化算法(WOA)原理,公式,应用,算法改进研究综述,完整matlab代码
  • 集成学习实际案例
  • 如何在量子计算时代保障 Sui 的安全性
  • C++模板进阶
  • 5.2.1 CallerMemberName的使用
  • Java 服务器端 jar 包内 class 文件替换与配置文件修改高级技术指南
  • SQL 使用 UPDATE FROM 语法进行更新
  • C++回溯算法详解
  • 在线查看【免费】vsd, vsdx/wmf, emf /psd, eps/pdf ,ofd, rtf/xmind/bpmn/eml/epub文件格式网
  • Elasticsearch插件:IDEA中的Elasticsearch开发利器
  • 【Unity笔记】Unity音视频播放监听器封装笔记:VideoPlayer + AudioSource事件触发与编辑器扩展
  • leetcode:LCP 01. 猜数字(python3解法)
  • 并发设计模式之双缓冲系统
  • 10天学会嵌入式技术之51单片机-day-4
  • 安装WSL2.0
  • LX4-数据手册相关
  • 一个很简单的机器学习任务
  • 我用deepseek做了一个提取压缩文件夹下pdf和word文件工具
  • 解决 Ubuntu 下 VTune 无法收集 CPU 硬件时间计数数据的问题
  • Android Kotlin+Compose首个应用
  • 服务器在国外国内用户访问慢会影响谷歌排名吗?