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

[Docker#6] 镜像 | 常用命令 | 迁移镜像 | 压缩与共享

目录

Docker 镜像是什么

生活案例

为什么需要镜像

镜像命令详解

实验

1.一些操作

1. 遍历查看镜像

2. 查看镜像仓库在本地的存储信息

进入镜像存储目录

查看 repositories.json 文件

3. 镜像过滤

4. 下载镜像时的分层

实战一:离线迁移镜像

实战二:镜像存储的压缩与共享


Docker 镜像是什么

  • 定义:Docker image 是一个只读文件,包含文件系统、源码、库文件、依赖、工具等运行应用所需的所有文件。
  • 特性:可以理解为一个模板,通过该模板可以实例化出多个容器。镜像内部采用分层文件系统(Union FS),每层文件系统都是只读的。
  • 分层:每层文件系统称为一层 layer,上层的修改会覆盖底层的可见性,最终呈现为一个完整的文件系统。
生活案例

  • 镜像:类似于 Java 或 C++ 中的类,可以方便地构建出不同的对象。
  • 分层:类似房屋装修,最底层是钢筋水泥,依次添加保温层、采暖管、水泥层,最后用户铺设木地板或地砖,每一层都可以独立修改,但最终呈现为一个整体。
为什么需要镜像
  • 一致性解决云端和本地环境的一致性问题,确保应用在不同环境中运行一致。
  • 便捷性:提供了一种打包应用程序和预配置服务器环境的便捷方式,便于个人使用或与他人共享。
镜像命令详解

1.docker images

  • 功能:列出本地镜像。
  • 语法docker images [OPTIONS] [REPOSITORY[:TAG]]
  • 别名docker image ls, docker image list
  • 关键参数
    • -a:列出所有镜像(含中间层)
    • --digests:显示镜像摘要信息
    • -f:显示满足条件的镜像
    • --format:指定返回值的模板
    • --no-trunc:显示完整信息
    • -q:只显示镜像 ID

样例

docker images
docker images ubuntu

2.docker tag

  • 功能:给镜像打标签。
  • 语法docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
  • 别名docker image tag
  • 样例
docker tag ubuntu:22.04 myregistry.com/myubuntu:22.04

3.docker pull

  • 功能:从镜像仓库拉取镜像。
  • 参考:镜像仓库命令

4.docker push

  • 功能:推送镜像到仓库。
  • 参考:镜像仓库命令

5.docker rmi

  • 功能:删除镜像。
  • 语法docker rmi [OPTIONS] IMAGE [IMAGE...]
  • 别名docker image rm, docker image remove
  • 关键参数
    • -f:强制删除
    • --no-prune:不移除过程镜像
  • 样例
docker rmi maxhou/mybusybox:v0.1

6.docker save

  • 功能:将镜像保存为 tar 归档文件。
  • 语法docker save [OPTIONS] IMAGE [IMAGE...]
  • 别名docker image save
  • 关键参数
    • -o:输出文件路径
  • 样例
docker save -o mynginx_1.22.1.tar nginx:1.22.1

7.docker load

  • 功能:导入使用 docker save 导出的镜像。
  • 语法docker load [OPTIONS]
  • 别名docker image load
  • 关键参数
    • --input, -i:指定导入文件
    • --quiet, -q:精简输出信息
  • 样例
docker load -i mynginx_1.22.1.tar

8.docker image inspect

  • 功能:查看镜像详细信息。
  • 语法docker image inspect [OPTIONS] IMAGE [IMAGE...]

样例

docker image inspect nginx:1.23.3

9.docker history

  • 功能:显示镜像历史。
  • 语法docker history [OPTIONS] IMAGE
  • 别名docker image history
  • 关键参数
    • -H, --human:易读格式
    • --no-trunc:显示全部信息
    • -q, --quiet:只显示镜像 ID

样例

docker history nginx:1.21.1

10.docker import

  • 功能:从归档文件中创建镜像。
  • 语法docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
  • 别名docker image import
  • 关键参数
    • -c:应用 Docker 指令
    • -m:提交说明

样例

docker import my_ubuntu_v3.tar maxhou/ubuntu:v4

在后面的文章中会再详细的讲解

11.docker image prune

  • 功能:删除不使用的镜像。
  • 语法docker image prune [OPTIONS]
  • 关键参数
    • -a, --all:删除所有未使用的镜像
    • --filter:指定过滤条件
    • -f, --force:不提示删除
  • 样例
docker image prune

12.docker build

  • 功能:使用 Dockerfile 创建镜像。
  • 语法docker build [OPTIONS] PATH | URL | -
  • 关键参数
    • --build-arg=[]:设置镜像创建时的变量
    • -f:指定 Dockerfile 路径
    • --label=[]:设置镜像元数据
    • --no-cache:不使用缓存
    • --pull:尝试更新镜像
    • --quiet, -q:安静模式
    • --tag, -t:镜像名称及标签
    • --network:设置网络模式

样例

docker build -t mynginx:v1 .

实验

1.一些操作

1. 遍历查看镜像

使用 docker images 命令可以列出本地所有镜像。可以通过指定仓库名来过滤特定的镜像。

2. 查看镜像仓库在本地的存储信息

Docker 镜像的存储位置默认在 /var/lib/docker 目录下。可以通过修改配置文件来更改存储位置。

进入镜像存储目录
root@139-159-150-152:/data/var/lib/docker/image/overlay2# cd /data/var/lib/docker/image/
root@139-159-150-152:/data/var/lib/docker/image#
查看 repositories.json 文件

repositories.json 文件记录了已拉取镜像的信息

3. 镜像过滤
  • 根据仓库名列出镜像
docker image ls ubuntu
  • 列出特定的某个镜像(指定仓库名和标签)
docker image ls ubuntu:18.04

使用过滤器参数 --filter-f

  • 查看某个位置之前的镜像
docker image ls -f before=ubuntu:18.04
  • 查看某个位置之后的镜像
docker image ls -f since=ubuntu:18.04
4. 下载镜像时的分层

下载镜像时,可以看到镜像是分层下载的。


实战一:离线迁移镜像

# 步骤1:保存镜像为tar文件
docker save -o busybox.tar busybox
# 步骤2:拷贝镜像到第二台服务器
scp busybox.tar root@43.138.218.166:/data/maxhou
# 步骤3:从tar文件中恢复镜像
docker load -i busybox.tar
# 步骤4:检查镜像是否正常运行
docker run -it --rm busybox:1.36.0 sh

测试:

实战二:镜像存储的压缩与共享

# 步骤1:拉取nginx镜像
docker pull nginx:1.22.1
# 步骤2:查看本地镜像
docker images
# 步骤4:为镜像打多个tag并推送
docker tag nginx:1.22.1 maxhou/mybitnginx:1.22.1
docker tag nginx:1.22.1 maxhou/mybitnginx:1.22.2
# 重复上述命令,为更多版本打tag
docker push maxhou/mybitnginx -a
# 步骤5:添加新镜像到仓库
docker tag nginx:1.16.1 maxhou/mybitnginx:1.16.1
docker push maxhou/mybitnginx:1.16.1

测试:


http://www.kler.cn/a/392397.html

相关文章:

  • ubuntu-desktop-24.04上手指南(更新阿里源、安装ssh、安装chrome、设置固定IP、安装搜狗输入法)
  • 丹摩征文活动|丹摩智算平台使用指南
  • [Docker#8] 容器配置 | Mysql | Redis | C++ | 资源控制 | 命令对比
  • GISBox VS ArcGIS:分别适用于大型和小型项目的两款GIS软件
  • 机器学习——贝叶斯
  • 机器情绪及抑郁症算法
  • ElegantRL:高效、稳定的深度强化学习开源框架
  • 力扣872:叶子相似的树
  • 架构师考试 五大架构风格
  • Diffusion Policy——斯坦福机器人UMI所用的扩散策略:从原理到其编码实现(含Diff-Control、ControlNet详解)
  • Android 默认科大讯飞语音包 即 默认文字转语音TTS包
  • 借助Aapose.Cells ,在 Node.js 中将 Excel 转换为 JSON
  • Linux基础(十四)——BASH
  • 使用 Web Search 插件扩展 GitHub Copilot 问答
  • AST反混淆
  • 2024 年Postman 如何安装汉化中文版?
  • 小皮PHP连接数据库提示could not find driver
  • 【MySQL】MySQL中的函数之REGEXP_SUBSTR
  • spring使用xml文件整合事务+druid+mybatis
  • 【 ElementUI 组件Steps 步骤条使用新手详细教程】
  • MySql--多表查询及聚合函数总结
  • Java项目实战II基于微信小程序的童装商城(开发文档+数据库+源码)
  • 工程认证标准下的Spring Boot计算机课程管理策略
  • MYSQL——事务管理
  • html5多媒体标签
  • HDR视频技术之一:光学与人类视觉感知特性基础