Docker Image(镜像)——5

news2024/11/16 4:30:19

目录:

  1. Docker 镜像是什么
  2. 镜像生活案例
  3. 镜像分层生活案例
  4. 为什么需要镜像
  5. 镜像命令详解
    1. 镜像命令清单
    2. docker images
    3. docker tag
    4. docker pull
    5. docker push
    6. docker rmi
    7. docker save
    8. docker load
    9. docker history
    10. docker import
    11. docker image prune
    12. docker build
  6. 镜像操作案例
    1. 查找镜像
    2. 下载镜像
    3. 查看镜像及列表存储位置
    4. 打标签
    5. 推送镜像
    6. 运行容器
    7. 镜像删除
  7. 镜像综合实战
    1. 实战一、离线迁移镜像
    2. 实战二、镜像存储的压缩与共享

1. Docker 镜像是什么

  • Docker image 本质上是一个 read-only 只读文件, 这个文件包含了文件系统、源码、库文件、依赖、工具等一些运行 application 所必须的文件。
  • 我们可以把 Docker image 理解成一个模板, 可以通过这个模板实例化出来很多容器。
  • image 里面是一层层文件系统 Union FS。联合文件系统,可以将几层目录挂载到一起,形成一个虚拟文件系统。
  • 每一层文件系统我们叫做一层 layer,联合文件系统可以对每一层文件系统设置三种权限,只读(readonly)、读写(readwrite)和写出(whiteout-able),但是 docker镜像中每一层文件系统都是只读的。
  • 构建镜像的时候,从一个最基本的操作系统开始,每个构建的操作都相当于做一层的修改,增加了一层文件系统。一层层往上叠加,上层的修改会覆盖底层该位置的可见性,这也很容易理解,就像上层把底层遮住了一样。当你使用的时候,你只会看到一个完全的整体,你不知道里面有几层,也不清楚每一层所做的修改是什么。

2.镜像生活案例

镜像相当于我们 java 或者 C++中的类,相当于一个模板,可以很方便的构建出来不同的对象。

 

3.镜像分层生活案例

我们以日常的地板为例,开发商的房子提供给用户的时候一般是做好了地暖,而这些地暖其实是一层一层添加的,最底层的钢筋水泥层,然后添加保温层,采暖管,再铺设水泥层,到最后交付的时候家家户户都是水泥面,这一层一般是不可修改的,最上层用户一般会再铺设商木地板或者地板砖每家每户的选择不一样,相当于我们镜像的容器层。

 

4.为什么需要镜像

  • 在部署应用时,通过手工或写一些脚本的方式进行部署。这样部署面临问题就是云端和本地环境一致问题。用户为每个应用打包过程比较繁琐,需要配置和给中修改等操作,非常费劲。
  • 然而, Docker 镜像就是为了解决这个小小的打包功能,突然一夜之间成名。那么,你可能说 Docker 镜像就是个压缩包,是的,你猜对了,它就像一个压缩包文件。它是如何解决 Paas 时代所面临的云端和本地一致性问题?很简单,它是把一个镜像制作成一个完整的操作系统所有文件和对应的目录结构,这样的压缩包是跟你本地和测试环境用的操作系统一摸一样。
  • docker 最大的贡献就是定义了容器镜像的分层的存储格式, docker 镜像技术的基础是联合文件系统(UnionFS),其文件系统是分层的。这样既可以充分利用共享层,又可以减少存储空间占用。
  • docker 镜像提供了一种打包应用程序和预配置服务器环境的便捷方式,可以很方便的将其用于个人用途或与其他 Docker 用户公开共享。
     

5.镜像命令详解

镜像命令清单

docker images 

功能

列出本地镜像

语法

docker images [OPTIONS] [REPOSITORY[:TAG]]

别名

docker image ls, docker image list

关键参数

  • -a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);
  • --digests :显示镜像的摘要信息;
  • -f :显示满足条件的镜像;
  • --format :指定返回值的模板文件;
  • --no-trunc :显示完整的镜像信息;
  • -q :只显示镜像 ID。

样例

#列出本地全部镜像
docker images
#列出本地镜像中 REPOSITORY 为 ubuntu 的镜像列表。
docker images ubuntu
docker tag

功能

标记本地镜像,将其归入某一仓库。

语法

docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

别名

docker image tag

样例

docker tag ubuntu:22.04 myregistry.com/myubuntu:22.04
docker pull

参考镜像仓库命令

docker push

参考镜像仓库命令

docker rmi

功能

删除镜像

语法

docker rmi [OPTIONS] IMAGE [IMAGE...]

别名

docker image rm, docker image remove

关键参数

-f :强制删除;

--no-prune :不移除该镜像的过程镜像,默认移除;

样例

root@139-159-150-152:/data/var/lib/docker/overlay2# docker rmi
maxhou/mybusybox:v0.1
Untagged: maxhou/mybusybox:v0.1
Untagged:
maxhou/mybusybox@sha256:2c8ed5408179ff4f53242a4bdd2706110ce000be23
9fe37a61be9c52f704c437
docker save

功能

将指定镜像保存成 tar 归档文件。

语法

docker save [OPTIONS] IMAGE [IMAGE...]

别名

docker image save

关键参数

-o :输出到的文件

样例

root@139-159-150-152:/data/myworkdir# docker save -o
mynginx_1.22.1.tar nginx:1.22.1
root@139-159-150-152:/data/myworkdir# ll
total 142756
drwxr-xr-x 2 root root 4096 Mar 13 15:05 ./
drwx--x--x 5 root root 4096 Mar 13 15:03 ../
-rw------- 1 root root 146172416 Mar 13 15:05 mynginx_1.22.1.tar
docker load

功能

导入使用 docker save 命令导出的镜像

语法

docker load [OPTIONS]

别名

docker image load

关键参数

--input , -i : 指定导入的文件,代替 STDIN。
--quiet , -q : 精简输出信息。

样例

root@139-159-150-152:/data/myworkdir# docker load -i
mynginx_1.22.1.tar
Loaded image: nginx:1.22.1

docker image inspect

功能

查看镜像详细信息

语法

docker image inspect [OPTIONS] IMAGE [IMAGE...]

注意事项:

docker inspect 会自动检查是镜像还是容器然后显示相信信息

样例

#查看镜像详细信息
docker images inspect nginx:1.23.3
docker history

功能

显示镜像历史

语法

docker history [OPTIONS] IMAGE

别名

docker image history

关键参数

-H , --human :大小和日期采用人容易读的格式展现
--no-trunc :显示全部信息,不要隔断;
-q, --quiet: 只显示镜像 id 信息;

样例

docker import

功能

从归档文件中创建镜像

语法

docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]

别名

docker image import

关键参数

-c :应用 docker 指令创建镜像;
-m :提交时的说明文字;

样例

docker import my_ubuntu_v3.tar maxhou/ubuntu:v4
docker image prune

功能

删除不使用的镜像

语法

docker image prune [OPTIONS]

关键参数

-a , --all : 删除全部不使用的镜像;
--filter filter:指定过滤条件;
-f, --force :不提示是否删除;

样例

docker image prune
docker build

功能

docker build 命令用于使用 Dockerfile 创建镜像

语法

docker build [OPTIONS] PATH | URL | -

关键参数

  •  --build-arg=[] :设置镜像创建时的变量;
  • -f :指定要使用的 Dockerfile 路径;
  • --label=[] :设置镜像使用的元数据;
  • --no-cache :创建镜像的过程不使用缓存;
  • --pull :尝试去更新镜像的新版本;
  • --quiet, -q :安静模式,成功后只输出镜像 ID;
  • --rm :设置镜像成功后删除中间容器;
  • --tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。
  • --network: 默认 default。在构建期间设置 RUN 指令的网络模式

样例

docker build -t mynginx:v1 .

6.镜像操作案例

查找镜像


下载镜像

查看镜像及列表存储位置

遍历查看镜像


 

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

进入/data/var/lib/docker/image/目录,注意存储位置老师的是修改后的/data


 

查看 overlay2/repositories.json 文件,该文件记录已拉取镜像文件的信息

 

查看本地镜像, 发现和 repositories.json 文件记录的信息相同

镜像过滤

根据仓库名列出镜像

docker image ls ubuntu

列出特定的某个镜像,也就是说指定仓库名和标签

docker image ls ubuntu:18.04

docker image ls 还支持强大的过滤器参数 --filter,或者简写 -f。之前我们已经看到了使用过滤器来列出虚悬镜像的用法,它还有更多的用法。查看某个位置之前的镜像 before,查看某个位置之后的镜像 since


 

查看镜像详情

 

查看镜像分层

Docker history 可以查看分层

docker image inspect 可以查看详细的分层

一些镜像下载的时候也可以看到是一层一层下载的

 

 打标签

推送镜像

运行容器

 
镜像删除 

镜像的删除:可以根据 id 和名字删除,对于使用的镜像需要先清理容器再删除镜像

 

7.镜像综合实战

实战一、离线迁移镜像

1. 服务器 1 上镜像保存为 tar 文件,如操作系统为 ubuntu

2. scp 或者只用使用可视化工具拷贝镜像到第二台服务器上

3. 从 tar 中恢复镜像

4. 执行 docker run 检查镜像是否可以正常运行

 

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

1. 拉取 nginx 镜像,如果本地没有,镜像是从仓库拉取,如果有会提示镜像已经存在,并且是最新的。

2. Docker images 查看本地镜像,可以看到该镜像为 142Mb

3. 从上面看到 nginx 为 1.21.1 的大小是 140 多 MB,但是我们从 docker hub 上查看可以看到镜像是 50 多 MB,说明发生了压缩,因为仓库到本地需要走网络,所以文件越小越好


 

4. 把一个镜像打多个 tag,然后同时推送仓库,可以看到是说层已经存在,不会重复存储
 

 

5. 添加一个新的镜像到我们的仓库的时候,如果 docker hub 发现已经有了是 mount的,不是从本地推上去的


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1284728.html

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

相关文章

为什么Nginx被称为反向代理

下图显示了 𝐟𝐨𝐫𝐰𝐚𝐫𝐝 𝐩𝐫𝐨𝐱𝐲 和 𝐫𝐞𝐯𝐞𝐫𝐬&#…

如何制定公司网络安全战略

网络安全可以保护公司的重要信息免受恶意软件和数据泄露等威胁。网络安全策略列出了您公司的 IT 系统当前面临的风险、您计划如何预防这些风险,以及如果发生这些风险该怎么办。 让本文成为您制定有效网络安全策略的一站式指南。我们将讨论网络安全风险评估以及策略…

LeetCode 1212 查询球队积分(PostgreSQL)

数据准备 Create table If Not Exists Teams (team_id int, team_name varchar(30)) Create table If Not Exists Matches (match_id int, host_team int, guest_team int, host_goals int, guest_goals int) Truncate table Teams insert into Teams (team_id, team_name) va…

创新领航 | 竹云参编《基层智治系统安全接入规范》团体标准正式发布!

近日,由杭州市委办公厅(市密码管理局)、杭州市基层治理综合指挥保障中心、杭州市拱墅区社会治理中心、杭州市拱墅区数据资源管理局、杭州竹云数字智能科技有限公司、杭州智诚质量标准技术评定中心共同参与编写的《基层智治系统安全接入规范》…

01、pytest:帮助你编写更好的程序

简介 ​pytest框架可以很容易地编写小型、可读的测试,并且可以扩展以支持应用程序和库的复杂功能测试。使用pytest至少需要安装Python3.7或PyPy3。PyPI包名称为pytest 一个快速的例子 content of test_sample.py def inc(x):return x1def test_ansewer():assert i…

nodejs+vue+微信小程序+python+PHP就业求职招聘信息平台的设计与实现-计算机毕业设计推荐

主要有前端和后端,前端显示整个网站的信息,后端主要对前端和网站的基本信息进行管理。用户端模块主要是系统中普通用户在注册、登录系统可以看到自己的基本信息,维护自己的信息;管理员端模块主要是管理员登录后对整个系统相关操作…

05、pytest断言确定的异常

官方用例 # content of test_sysexit.py import pytestdef f():raise SystemExit(1)def test_mytest():with pytest.raises(SystemExit):f()解读与实操 ​ 标准python raise函数可产生异常。pytest.raises可以断言某个异常会发现。异常发生了,用例执行成功&#x…

AF自动登录应用--实现无源码系统单点登录

在企业信息化的进程中,许多组织拥有一系列的老应用系统,这些系统在多年的运行中积累了大量的业务数据和流程。然而,这些老应用系统往往没有设计或实现单点登录(SSO)功能,用户需要在不同系统之间频繁输入账号…

【算法】算法题-20231205

这里写目录标题 一、LCS 01. 下载插件二、已知一个由数字组成的列表,请将列表中的所有0移到右侧三、实现一个trim()函数,去除字符串首尾的空格(不能使用strip()方法) 一、LCS 01. 下载插件 简单 小扣打算给自己的 VS code 安装使…

pycharm打断点调试

在PyCharm中使用断点调试可以帮助逐行执行代码并查看变量的值,以便更好地理解程序的执行过程。以下是在PyCharm中设置断点和使用调试功能的步骤和注意事项: 步骤: 打开PyCharm并打开要调试的项目。找到要设置断点的代码行。您可以在行号区…

如何使用Node.js快速创建本地HTTP服务器并实现异地远程访问

文章目录 前言1.安装Node.js环境2.创建node.js服务3. 访问node.js 服务4.内网穿透4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5.固定公网地址 前言 Node.js 是能够在服务器端运行 JavaScript 的开放源代码、跨平台运行环境。Node.js 由 OpenJS Foundation&#xff0…

在用户不安装 ImageMagick 的情况下使用

需要以编程的方式配置环境变量(手工配置也是一样的效果) 1、首先要配置 path 将 {ImageMagick目录} 配置到path中 2、配置 MAGICK_HOME 将 {ImageMagick目录} 配置到MAGICK_HOME中 3、配置MAGICK_CODER_MODULE_PATH 将 {ImageMagick目录}\modules\…

【动态规划】LeetCode-198/LCR089.打家劫舍

🎈算法那些事专栏说明:这是一个记录刷题日常的专栏,每个文章标题前都会写明这道题使用的算法。专栏每日计划至少更新1道题目,在这立下Flag🚩 🏠个人主页:Jammingpro 📕专栏链接&…

openGauss学习笔记-142 openGauss 数据库运维-例行维护-导出并查看wdr诊断报告

文章目录 openGauss学习笔记-142 openGauss 数据库运维-例行维护-导出并查看wdr诊断报告 openGauss学习笔记-142 openGauss 数据库运维-例行维护-导出并查看wdr诊断报告 生成快照数据需参数enable_wdr_snapshoton,访问WDR快照数据需要sysadmin或monadmin权限&#…

力扣刷题总结 字符串(1)【反转法】

🔥博客主页: A_SHOWY🎥系列专栏:力扣刷题总结录 数据结构 云计算 数字图像处理 344.反转字符串eswap应用双指针541.反转字符串Ⅱm可以自己定义函数也可以直接reverse151.反转字符串中的单词m局部翻转加全局翻转卡码网 替换…

05-微服务架构构建之六边形架构

文章目录 前言一、六边形架构的概念二、六边形架构的特点三、微服务架构的良好实践总结 前言 通过前面的学习,我们掌握了微服务架构的基本组件等内容。在选择适合每个微服务的架构时,六边形架构“天然”成为每个微服务构建的最佳选择。 一、六边形架构的…

【征稿倒计时十天,ACM独立出版,有确定的ISBN号,ei检索稳且快】

2023 人工智能、系统与网络安全国际学术会议 (AISNS 2023) 2023 International Conference on Artificial Intelligence, Systems and Network Security 由西南科技大学计算机科学与技术学院主办的2023人工智能、系统与网络安全国际学术会议 (AISNS 2023&#xff0…

Python开发运维:Python 3.8 常用标准库

目录 一、理论 1.Python3.8 标准库 2.常用标准库 二、问题 1.Python 正则表达式如何实现 一、理论 1.Python3.8 标准库 (1)官网 Python 标准库 — Python 3.8.17 文档 (2)其他版本下拉列表查询 2.常用标准库 &#xff0…

事务管理 springboot

事务是一组操作的集合 它是一个不可分割的工作单位 这些操作 要么同时成功要么同时失败 Spring事务管理 #Spring事务管理日志 logging: level: org.springframework.jdbc.support.JdbcTransactionManager: debug

qt使用wimlib-imagex,做windows系统备份还原

wimlib-imagex是个第三方工具,可对系统映像进行操作,下载地址: https://wimlib.net/downloads/index.html 程序主要用到以下这两个文件:libwim-15.dll和wimlib-imagex.exe wimlib-imagex.exe的调用命令参数,可以通过…