【Docker入门】Docker Image(Docker 镜像)

🚀 欢迎来到我的CSDN博客:Optimistic _ chen

一名热爱技术与分享的全栈开发者,在这里记录成长,专注分享编程技术与实战经验,助力你的技术成长之路,与你共同进步!


🚀我的专栏推荐

专栏 内容特色 适合人群
🔥C语言从入门到精通 系统讲解基础语法、指针、内存管理、项目实战 零基础新手、考研党、复习
🔥Java基础语法 系统解释了基础语法、类与对象、继承 Java初学者
🔥Java核心技术 面向对象、集合框架、多线程、网络编程、新特性解析 有一定语法基础的开发者
🔥Java EE 进阶实战 Servlet、JSP、SpringBoot、MyBatis、项目案例拆解 想快速入门Java Web开发的同学
🔥Java数据结构与算法 图解数据结构、LeetCode刷题解析、大厂面试算法题 面试备战、算法爱好者、计算机专业学生
🔥Redis系列 从数据类型到核心特性解析 项目必备

🚀我的承诺:

✅ 文章配套代码:每篇技术文章都提供完整的可运行代码示例

✅ 持续更新:专栏内容定期更新,紧跟技术趋势

✅ 答疑交流:欢迎在文章评论区留言讨论,我会及时回复(支持互粉)


🚀 关注我,解锁更多技术干货!
⏳ 每天进步一点点,未来惊艳所有人!✍️ 持续更新中,记得⭐收藏关注⭐不迷路 ✨

📌 标签:#技术博客#编程学习#Java#C语言#算法#程序员

文章目录

  • [Docker 镜像是什么](#Docker 镜像是什么)
  • 镜像命令
    • [docker images 和 docker image inspect](#docker images 和 docker image inspect)
    • [docker tag](#docker tag)
    • [docker rmi](#docker rmi)
    • [docker save](#docker save)
    • [docker load](#docker load)
    • [docker history](#docker history)
    • [docker image prune](#docker image prune)
  • 离线迁移镜像
  • 完结撒花!🎉

Docker 镜像是什么

  • Docker Image本质上是一个read-only只读文件 ,这个文件包含了文件系统、源码、库文件、依赖、工具 等一些运行application所必须的文件。
  • 我们把Docker Image理解成一个模板,利用这些模板实例化出来很多容器,类比于Java中的类与对象,我们根据一个类可以new很多实例化对象。

Image(镜像)里面是一层层文件系统Union FS(联合文件系统)可以将几层目录挂载到一起,形成一个虚拟文件系统 。每一层文件系统我们叫做一层layer,联合文件系统可以对每一层文件系统设置三种权限,只读(read only)、读写(readwrite)和写出(whiteout-able)但是,docker镜像中每一层文件系统都是只读的。

建立镜像的时候,从一个最基本的操作系统开始,每个构建的操作都相当于加一层修改,增加一层文件系统。当你使用的时候,你只会看到一个完全的整体,不知道里面有几层。

镜像解决的问题

|-----------------------------------------------------------------------|
| 如同装修房屋的过程:从毛坯开始,依次安装水电管线、铺设地暖,最后选择地板或地毯。每位业主的装修需求各异,正如我们对容器镜像层的定制化选择。 |

部署应用时,面临云端和本地环境不一致的问题,需要程序员配置和修改,非常费劲。然而,Docker镜像就很好的解决了这个问题,Docker镜像就像一个压缩包,它把一个镜像制作成一个完整的操作系统所有文件和对应的目录结构,这样的压缩包和你本地环境用的操作系统一模一样。

Docker最大的贡献是定义了容器镜像的分层的存储格式,docker镜像技术的基础是联合文件系统,其文件系统是分层的,既可以充分利用共享层,又可以减少存储空间占用。

镜像命令

docker images 和 docker image inspect

功能:列出本地镜像

powershell 复制代码
docker images [options] [repository[:Tag]]
  • -a: 列出本地所有镜像

  • --digests:显示镜像的摘要信息(即镜像内容的sha256哈希值)

  • -f:显示满足条件的镜像(-f 有很多选项,这里不一一列举)

    *--format:指定返回值的模板

  • --no-trunc:显示完整的镜像信息(不截断ID)

  • -q:只显示镜像ID

docker image inspect功能:查看镜像的详细信息(支持ID查看)

powershell 复制代码
docker image inspect [options] image [image...]

docker tag

功能:标记本地镜像,将其归入某一仓库(把旧的镜像:tag修改为新的镜像:tag)

powershell 复制代码
docker tag source_image[:tag] target_image[:tag]

docker rmi

功能:删除镜像

powershell 复制代码
docker rmi [options] image [image ...]
  • -f:强制删除
  • -no-prune:不移除该镜像的过程镜像,默认移除

docker save

功能:将指定镜像保存成 tar 归档文件

powershell 复制代码
docker save [options] image [imgae ...]
  • -o:输出到的文件

docker load

功能:导入使用docker svae 命令导出的镜像

powershell 复制代码
docker load [options]
  • --input(-i):指定导入文件,代替stdin
  • --quiet(-q):精简输出信息(默认)

docker history

功能:显示镜像历史(每一层)

powershell 复制代码
docker history [options] image
  • -H(--human):大小和日期采用人容易读的格式展现
  • --no-trunc:显示全部信息,不要隔断
  • -q(--quiet):只显示镜像ID信息

docker image prune

功能:删除不使用的镜像

powershell 复制代码
docker image prunc [options]
  • -a(--all):删除全部不适用的镜像
  • --filter filter:指定过滤对象
  • -f(--force):不提示是否删除

离线迁移镜像

因为要求离线,所以我们不能去网站上直接去pull镜像,只能通过从自己仓库中pull下来一个镜像

powershell 复制代码
# 先登录仓库
docker login --username=小张不嚣涨 crpi-2aypcteu5jaqco4g.cn-hangzhou.personal.cr.aliyuncs.com

# 拉取镜像
docker pull crpi-2aypcteu5jaqco4g.cn-hangzhou.personal.cr.aliyuncs.com/optimistic/optimistic1:v1.0

然后将镜像保存为tar文件

powershell 复制代码
# 确定拉取成功
docker images

# 保存为tar文件
docker save -o mynginx2.tar crpi-2aypcteu5jaqco4g.cn-hangzhou.personal.cr.aliyuncs.com/optimistic/optimistic1:v1.0

接下来检查离线服务器上是否安装了docker,创建目录,通过scp命令拷贝tar文件(通过SSH协议完成两个服务器之间的通信)

powershell 复制代码
docker -v
mkdir -p /data/test
# 通过scp把mynginx2.tar拷贝到对端服务器root用户的要求目录下
scp mynginx2.tar root@对端服务器IP:/data/test

然后在目标服务器上加载tar包,完成启动

powershell 复制代码
docker load -i mynginx2.tar
docker images

#把该镜像交互式启动为一个容器
docker run -it crpi-2aypcteu5jaqco4g.cn-hangzhou.personal.cr.aliyuncs.com/optimistic/optimistic1:v1.0 sh

现在就完成了离线迁移镜像的过程,并且不被操作系统影响。

完结撒花!🎉

如果这篇博客对你有帮助,不妨点个赞支持一下吧!👍
你的鼓励是我创作的最大动力~

想获取更多干货? 欢迎关注我的专栏 → optimistic_chen

📌 收藏本文,下次需要时不迷路!

我们下期再见!💫 持续更新中......


悄悄说:点击主页有更多精彩内容哦~ 😊

相关推荐
小林up2 小时前
Ubuntu访问不了Git解决办法
linux·git·ubuntu
十月南城2 小时前
高可用的三件事——无状态化、水平扩展与故障转移的协同设计
运维·web安全·微服务·云计算·xss
食咗未2 小时前
Linux BT656转AHD显示调试记录
linux·驱动开发·显示屏·ahd out
小林up2 小时前
Ubuntu使用阿里云安装docker
ubuntu·阿里云·docker
爱莉希雅&&&2 小时前
Docker 超详细全量笔记(含参数解释)
linux·运维·服务器·笔记·docker·容器
重生之绝世牛码2 小时前
Linux软件安装 —— ClickHouse集群安装(集成Zookeeper)+ chproxy负载均衡
大数据·linux·数据库·clickhouse·软件安装·clickhouse集群安装·clickhouse负载均衡
信创天地2 小时前
信创运维核心技术:国产化软硬件适配与故障排查全解析
运维·人工智能·开源·dubbo·运维开发·risc-v
学烹饪的小胡桃2 小时前
WGCLOUD使用指南 - 如何监控交换机防火墙的数据
运维·服务器·网络
Howrun7772 小时前
Linux网络编程_常见API
linux·运维·网络