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

Docker 三剑客:镜像、容器、仓库

概述

如果你刚开始学习 Docker,你一定经常听到三个词:

镜像(Image)容器(Container)仓库(Registry)

它们是 Docker 的三大核心概念,理解它们的关系,是掌握 Docker 的第一步

Docker 是什么

Docker 是一个开源平台,用于打包、分发和运行应用程序
它的核心思想是:一次打包,到处运行

而实现这一目标的,就是我们今天要讲的三个核心概念

镜像(Image)—— 应用的“模板”

镜像是一个只读的模板,里面包含了运行某个应用所需的一切:

  • 应用代码
  • 运行环境(如 Python、Node.js)
  • 依赖库
  • 配置文件
  • 启动命令

你可以把它理解为一个应用程序的“快照”或“安装包”

举个例子

  • nginx:latest 是一个镜像,包含了 Nginx 服务器的所有内容。
  • python:3.9-slim 是一个镜像,包含了 Python 3.9 运行环境。

关键特点

  • 只读:不能修改,只能用来创建容器。
  • 分层存储:镜像由多个层组成,复用层可以节省空间。
  • 可共享:可以上传到仓库,供他人下载使用。

容器(Container)—— 镜像的“运行实例”

容器镜像的运行实例
你可以把它理解为一个轻量级的、独立的“小电脑”,里面正在运行一个应用。

举个例子

  • 你用 nginx:latest 镜像启动了一个容器,这个容器就在运行 Nginx 服务。
  • 你可以同时运行多个基于 nginx:latest 的容器,每个都是独立的。

关键特点

  • 可读写:容器启动后,可以修改文件(但重启后会丢失,除非挂载卷)。
  • 隔离运行:每个容器相互隔离,互不影响。
  • 生命周期管理:可以启动、停止、删除容器。

常用命令

docker run nginx          # 从镜像启动一个容器
docker ps                 # 查看正在运行的容器
docker stop <container>   # 停止容器
docker rm <container>     # 删除容器

仓库(Registry)—— 镜像的“应用商店”

仓库是存放和分发 Docker 镜像的地方。

你可以把它理解为一个“应用商店”或“GitHub for 镜像”。

最著名的公共仓库是 Docker Hub(https://hub.docker.com),里面有很多官方和社区维护的镜像,比如:

  • ubuntu
  • mysql
  • redis
  • python

企业也可以搭建私有仓库,用于存储内部应用的镜像。

关键操作

docker pull nginx         # 从仓库下载镜像
docker push myapp:1.0     # 将自定义镜像上传到仓库

三者关系

[ 仓库(Registry) ]↑ ↓ pull / push
[ 镜像(Image) ] ————→ [ 容器(Container) ](只读模板)           (运行实例)

流程说明

  1. 你从 仓库 下载一个 镜像(如 nginx
  2. 使用这个 镜像 启动一个 容器,应用开始运行
  3. 你修改了应用,生成了一个新的 镜像
  4. 把新镜像 推送到仓库,供其他人使用

实际操作示例

1. 从仓库拉取镜像

docker pull ubuntu:20.04

2. 用镜像启动容器

docker run -it ubuntu:20.04 /bin/bash

-it 表示交互模式,进入容器终端)

3. 在容器中做些修改(如安装软件)

apt-get update && apt-get install -y curl

4. 退出容器,提交为新镜像

docker commit <container-id> my-ubuntu-with-curl

5. 推送到仓库(需先登录)

docker tag my-ubuntu-with-curl yourname/my-ubuntu:latest
docker push yourname/my-ubuntu:latest

常见误区

误区正确认知
“镜像和容器是一样的”镜像是模板,容器是运行实例,关系类似“类与对象”
“容器可以永久保存修改”默认情况下,容器删除后修改丢失,需用“卷(Volume)”持久化数据
“仓库只能是 Docker Hub”也可以是私有仓库(如 Harbor)、阿里云容器镜像服务等

总结

概念类比作用
镜像(Image)软件安装包 / 蓝图包含应用和依赖,用于创建容器
容器(Container)正在运行的程序镜像的实例,应用实际运行的地方
仓库(Registry)应用商店 / GitHub存储和分发镜像

记住这个流程:

仓库 → 镜像 → 容器

http://www.dtcms.com/a/449529.html

相关文章:

  • 有哪些做二手的网站排名好的网站关键词优化企业
  • FPGA驱动LTC1856 ADC芯片
  • 应用层:Http、Https
  • ARMv8系统的安全性(一):安全目标是什么?
  • Flink 作业测试依赖、MiniCluster、DataStream 与 Table/SQL 上手
  • 如何分析对手网站关键词免费logo在线制作字体logo
  • 如何设计优秀的银行数字化转型培训方案
  • redis的主从模式的复制
  • 如何网站做淘客怎样建立
  • 购物网站的功能板块wordpress ajax 评论翻页
  • 齐博cms重庆百度搜索优化
  • 大模型原理与实践:第四章-大语言模型_第2部分-LLM预训练、监督微调、强化学习
  • Flutter SingleChildScrollView 使用详解
  • 中秋特别篇:使用QtOpenGL和着色器绘制星空与满月
  • Easysearch 索引别名(Index Alias)详解
  • 安徽省港航建设投资集团网站wordpress图片清晰度
  • 网站交互性企业营销型网站建设规划
  • 无锡设计网站公司微信小程序登录流程
  • GraphQL 工程化篇 I - REST vs GraphQL 的取舍与基础配置
  • springboot二手儿童绘本交易系统设计与实现(代码+数据库+LW)
  • 如何解决 pip install -r requirements.txt 本地轮子路径 ‘./packages/xxx.whl’ 不存在 问题
  • 西宁好的网站建设智慧工业园区建设方案
  • Kotlin Flow 与“天然背压”(完整示例)
  • Kotlin invoke 函数调用重载
  • 郑州网站建设培训学校昆明怎样优化网站
  • XMLHttpRequest 异步请求servlet 上传文件并且带有参数
  • Python私教FastAPI+React构建Web应用01 概述
  • 深入理解操作系统进程:管理的本质与“先描述,再组织“的核心逻辑
  • 网站手机自适应无锡产品排名优化
  • 深度学习(十五):Dropout