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

news2025/4/22 15:17:47

前言: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:latest
        ports:
          - "80:80"
        volumes:
          - ./html:/usr/share/nginx/html
      db:
        image: postgres:13
        environment:
          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.coloradmin.cn/o/2340189.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux深度探索:进程管理与系统架构

1.冯诺依曼体系结构 我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系。 截至目前,我们所认识的计算机,都是由⼀个个的硬件组件组成。 输入设备:键盘,鼠标…

一段式端到端自动驾驶:VAD:Vectorized Scene Representation for Efficient Autonomous Driving

论文地址:https://github.com/hustvl/VAD 代码地址:https://arxiv.org/pdf/2303.12077 1. 摘要 自动驾驶需要对周围环境进行全面理解,以实现可靠的轨迹规划。以往的方法依赖于密集的栅格化场景表示(如:占据图、语义…

4月21日星期一今日早报简报微语报早读

4月21日星期一,农历三月廿四,早报#微语早读。 1、女子伸腿阻止列车关门等待同行人员,被深圳铁路警方行政拘留; 2、北理工再通报:开除宫某党籍,免去行政职务,解除聘用关系; 3、澳门…

Kubeflow 快速入门实战(二) - Pipelines / Katib / KServer

承接前文博客 Kubeflow 快速入门实战(一) Kubeflow 快速入门实战(一) - 简介 / Notebooks-CSDN博客文章浏览阅读441次,点赞19次,收藏6次。本文主要介绍了 Kubeflow 的主要功能和能力,适用场景,基本用法。以及Notebook&#xff0c…

【JavaEE初阶】多线程重点知识以及常考的面试题-多线程进阶(一)

本篇博客给大家带来的是多线程中常见的所策略和CAS知识点. 🐎文章专栏: JavaEE初阶 🚀若有问题 评论区见 ❤ 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条. 你们的支持是我不断创作的动力 . 王子,公主请阅🚀 要开心要快…

SAP系统生产跟踪报表入库数异常

生产跟踪报表入库数异常 交库21820,入库43588是不可能的 原因排查: 报表的入库数取值,是取移动类型321 (即系检验合格后过账到非限制使用)的数. 查凭证,101过账2次21807,321过账了2次21794,然后用102退1次21794.就是说这批物料重复交库了. 解决: 方案一:开发增强设…

Kubernetes控制平面组件:调度器Scheduler(一)

云原生学习路线导航页(持续更新中) kubernetes学习系列快捷链接 Kubernetes架构原则和对象设计(一)Kubernetes架构原则和对象设计(二)Kubernetes架构原则和对象设计(三)Kubernetes控…

08-DevOps-向Harbor上传自定义镜像

harbor创建完成,往harbor镜像仓库中上传自定义的镜像,包括新建项目、docker配置镜像地址、镜像重命名、登录harbor、推送镜像这几个步骤,具体操作如下: harbor中新建项目 访问级别公开,代表任何人都可以拉取仓库中的镜…

极验4滑块笔记:整理思路--填坑各种问题

最近在研究某验4逆向分析,以前没弄过这种,所以爬了很多坑,就是把分享给大家~ 1.这个gcaptcha4.js需要逆向,我的方法很笨就是将_ᕶᕴᕹᕶ()这个蝌蚪文打印处来,全局替换一下,然后Unicode这种代码&#xff0…

LX3-初识是单片机

初识单片机 一 什么是单片机 单片机:单片微型计算机单片机的组成:CPU,RAM(内存),flash(硬盘),总线,时钟,外设…… 二 Coretex-M系列介绍 了解ARM公司与ST公司ARM内核系列: A 高性能应用,如手机,电脑…R 实时性强,如汽车电子,军工…M 超低功耗,如消费电子,家电,医疗器械 三…

2025年渗透测试面试题总结-拷打题库10(题目+回答)

网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 2025年渗透测试面试题总结-拷打题库10 1. CSRF成因及防御措施 | 非Token防御 2. XSS Worm原理 3. Co…

Linux系统下docker 安装 MySQL

踩坑解决: 1、docker安装mysql,不需要执行search 2、pull时,需要指定版本号 3、连接Navicat需要看阿里云端口号是否开启 在拉取镜像的时候,如果不使用代理服务器,docker search mysql不需要执行 本人在未使用代理服…

Web开发:ABP框架10——使用数据库存储文件,完成文件的下载和上传

一、简要介绍 字节数组:字节数组是存储数据的字节序列,常用于二进制数据(如图片、音视频、文档等)的表示。 文件和字节的关系:文件是由字节构成,字节是文件内容的基本单位。 文件以字节形式存储在服务器数…

NestJS-Knife4j

文章目录 前言✅ 一、什么是 Knife4j?✅ 二、Knife4j 与 Swagger 对比✅ 三、NestJS-Knife4j 集成1. 安装依赖2. 配置 Swagger 与 Knife4j3. 启动应用并访问接口文档 ✅ 四、功能增强1. **接口分组**2. **请求/响应示例**3. **接口文档的美化** ✅ 五、总结 前言 N…

【项目管理】成本类计算 笔记

项目管理-相关文档,希望互相学习,共同进步 风123456789~-CSDN博客 (一)知识总览 项目管理知识域 知识点: (项目管理概论、立项管理、十大知识域、配置与变更管理、绩效域) 对应&…

基于MuJoCo物理引擎的机器人学习仿真框架robosuite

Robosuite 基于 MuJoCo 物理引擎,能支持多种机器人模型,提供丰富多样的任务场景,像基础的抓取、推物,精细的开门、拧瓶盖等操作。它可灵活配置多种传感器,提供本体、视觉、力 / 触觉等感知数据。因其对强化学习友好&am…

13.编码器的结构

从入门AI到手写Transformer-13.编码器的结构 13.编码器的结构代码 整理自视频 老袁不说话 。 13.编码器的结构 T r a n s f o r m e r E n c o d e r : 输入 [ b , n ] TransformerEncoder:输入[b,n] TransformerEncoder:输入[b,n] E m b e d d i n g : − > [ b , n , d ]…

[原理分析]安卓15系统大升级:Doze打盹模式提速50%,续航大幅增强,省电提升率5%

技术原理:借鉴中国友商思路缩短进入Doze的时序 开发者米沙尔・拉赫曼(Mishaal Rahman)在其博文中透露,谷歌对安卓15系统进行了显著优化,使得设备进入“打盹模式”(Doze Mode)的速度提升了50%,并且部分机型的待机时间因此得以延长三小时。设备…

cdp-(Chrome DevTools Protocol) browserscan检测原理逆向分析

https://www.browserscan.net/zh/bot-detection 首先,打开devtools后访问网址,检测结果网页显示红色Robot,标签插入位置,确定断点位置可以hook该方法,也可以使用插件等方式找到这个位置,本篇不讨论. Robot标签是通过insertBefore插入的. 再往上追栈可以发现一个32长度数组,里面…

【Java面试笔记:基础】1.谈谈你对Java平台的理解?

前言 Java 是历史悠久且主流的编程语言,拥有庞大的开发者群体和广泛的应用领域。通过系统学习和实践,构建扎实的 Java 知识体系,提升面试成功率 笔记核心内容 1. Java 平台的核心特性 跨平台特性:Java 的核心特性之一是“Writ…