【docker】镜像

Docker 镜像全面讲解

什么是 Docker 镜像

Docker 镜像是用于创建 Docker 容器的只读模板,包含运行应用所需的文件、环境变量和配置。镜像类似于虚拟机的快照,但更轻量,提供应用的标准化部署方式。


Docker 镜像的主要特点

特点 描述
轻量级 镜像由分层结构组成,每一层是只读的,不重复存储相同内容。
分层存储 每次更改会作为新的一层叠加在旧的镜像之上,便于管理和共享。
便于分发 镜像可以推送到公共或私有注册中心,方便其他开发者拉取和使用。
跨平台 同一镜像可以在不同的平台上运行,只需支持相同的 Docker 运行环境。

Docker 镜像关键概念

1. Registry(注册中心)

  • 保存和分发镜像的存储服务。
  • 主要有 Docker Hub(官方公共注册中心)和私有注册中心。

2. Repository(仓库)

  • 仓库是镜像的集合,用于存储同一项目或应用的多个版本。
  • 格式:<registry>/<repository>:<tag>(例如 nginx:latest)。

3. Manifest(清单文件)

  • 定义镜像的元数据,包括层信息和镜像架构等。
  • 是镜像分发的关键,支持跨平台兼容。

4. Image 和 Layer

  • Image(镜像) 是若干只读层(Layer)的组合。
  • Layer(层) 是镜像中的增量更新单位,便于分层管理。

5. Dockerfile

  • 定义镜像构建规则的脚本文件。
  • 使用简单的指令(如 FROM、RUN、COPY)来描述镜像构建过程。

镜像管理常用命令

命令 功能
docker images 列出本地所有镜像。
docker rmi 删除指定的镜像。
docker tag 为镜像添加新标签。
docker build 根据 Dockerfile 构建镜像。
docker save 保存镜像为文件,便于分享。
docker load 从文件加载镜像到本地。
docker import 从 tar 文件导入为镜像(通常结合 docker export 使用)。

镜像仓库操作

命令 功能
docker login 登录到镜像注册中心。
docker logout 登出镜像注册中心。
docker pull 从镜像仓库拉取镜像到本地。
docker push 将本地镜像推送到镜像仓库。
docker search 在镜像仓库中搜索镜像。

实践操作

直观感受镜像分层和联合挂载

  • 拉取一个镜像(如 nginx),运行 docker history 查看镜像的分层信息:

    bash 复制代码
    docker pull nginx
    docker history nginx

镜像分层和联合挂载

通过 docker inspect 查看容器的挂载点和层信息

bash 复制代码
docker inspect <container_id>

镜像构建

基于已有容器构建镜像

运行一个容器并进行修改
bash 复制代码
docker run -it ubuntu /bin/bash
提交该容器为新的镜像
bash 复制代码
docker commit <container_id> my_custom_image:1.0

使用 docker build 构建镜像

创建一个 Dockerfile
bash 复制代码
FROM ubuntu:latest  
RUN apt-get update && apt-get install -y curl  
CMD ["curl", "--version"]
构建镜像
bash 复制代码
docker build -t my_image:1.0 .

镜像分享

使用 tag 命令

为镜像添加标签
bash 复制代码
docker tag my_image:1.0 myrepo/my_image:1.0

公共仓库分享

推送到 Docker Hub
bash 复制代码
docker login  
docker push myrepo/my_image:1.0

使用 docker save 和 docker load 分享

保存镜像为文件
bash 复制代码
docker save -o my_image.tar my_image:1.0
加载镜像
bash 复制代码
docker load -i my_image.tar

私有注册中心搭建并分享镜像

使用 Docker 官方镜像快速搭建注册中心
bash 复制代码
docker run -d -p 5000:5000 --name registry registry:2
推送镜像到私有注册中心
bash 复制代码
docker tag my_image:1.0 localhost:5000/my_image:1.0  
docker push localhost:5000/my_image:1.0
拉取镜像测试
bash 复制代码
docker pull localhost:5000/my_image:1.0
相关推荐
猿究院_夏燊10 小时前
Spring Bean 生命周期
java·后端·spring
Wang's Blog11 小时前
Java 项目实战: 交友项目:登录链路回顾与今日任务地图
java·开发语言·状态模式·交友
信誓旦旦的程序猿11 小时前
【Python量化实战宝典 #08】可转债与债券接口手册:转股价·溢价率·纯债价值(Python 可跑)
java·python·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口
砚底藏山河11 小时前
python量化:行情数据回溯
java·开发语言·python·金融·maven
Jlzn888812 小时前
华东电芯分选通道数怎么配才不堵线
java·人工智能·架构·自动化·制造
香吧香12 小时前
GRPC连接机制---长连接分析
java·网络与传输协议
我是人✓12 小时前
SpringBoot项目的五种创建方式
java·spring boot·后端
Wang's Blog13 小时前
Java 项目实战: 交友项目 - 阿里云 OSS 入门案例:从创建 Bucket 到上传拿到可访问 URL
java·阿里云·交友
林森i13 小时前
ida 安装教程
eureka
裕晟资质规划14 小时前
三类涉密资质延续时限差异分析:军工60日与集成印制3个月的边界
java·服务器·前端·网络·安全