【Docker】4. Docker Image

news/2024/10/31 3:22:01/

文章目录

    • Dokcer Image
      • Docker Image Command
      • Docker Image Operator

Dokcer Image

Docker Image 简介

Docker Image 本质上是一个只读文件,这个文件包含了文件系统、源码、库文件、依赖、工具等一些运行application(应用)所必须的文件。可以将其理解成一个模板,可以实例化出很多容器

本质是一个联合文件系统(Union FS),每一层文件系统我们叫做一层,联合文件系统可以对每一层文件系统设置三种权限,只读,读写,写出。但是Docker Image中的每一层文件系统都是只读的

Docker Image 作用

部署应用时,常常会出现云端和本地环境不一致的问题,用户为每个应用打包过程非常繁琐,Docker Image就是为了解决这个打包功能

Docker Image把一个镜像制作成一个完整的操作系统所有文件和对应的目录结构,这样的压缩包是跟你本地和测试环境用的操作系统一摸一样的,很好解决了Paas时代云端和本地一致性问题

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


Docker Image Command

命令别名功能
docker imagesdocker image ls / docker image list列出本地镜像
docker tagdocker image tag给镜像打标签,用于推送镜像仓库
docker pulldocker image pull从镜像仓库拉去镜像
docker pushdocker image push向镜像仓库推送镜像
docker rmidocker image rm / docker image remove删除本地镜像
docker builddocker image build通过dockerfile 制作镜像
docker savedocker image save将指定镜像保存成tar归档文件
docker loaddocker image load导入使用docker save 命令导出的镜像
docker image inspect查看镜像详细信息
docker historydocker image history查看镜像历史信息
docker importdocker image import从归档文件docker export 中创建镜像
docker image prune删除不能是能的镜像

docker rmi [option] image [image…] 删除本地镜像

# 拉去busybox:1.35.0
[root@VM-20-6-centos ~]# docker pull busybox:1.35.0
1.35.0: Pulling from library/busybox
1.35.0: Pulling from library/busybox
c15cbdab5f8e: Pull complete 
Digest: sha256:b4e4a06de46acc0958cd93e2eeb769077d255f06a7c3a91196509c16b7bc989e
Status: Downloaded newer image for busybox:1.35.0
docker.io/library/busybox:1.35.0
[root@VM-20-6-centos ~]# docker images busybox
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
busybox      1.36      8135583d97fe   9 days ago    4.86MB
busybox      1.35.0    dddc7578369a   2 weeks ago   4.85MB
# 删除本地安装的镜像
[root@VM-20-6-centos ~]# docker image remove dddc7578369a
Untagged: busybox:1.35.0
Untagged: busybox@sha256:b4e4a06de46acc0958cd93e2eeb769077d255f06a7c3a91196509c16b7bc989e
Deleted: sha256:dddc7578369a0eb6d94c6eb359fb15cc807e2874fbd7e40614ed0b348c45fd2c
Deleted: sha256:42ef21f45b9a2f44c8235aebe71f7bf716cc464fc45d0a302ef48469040a87da# 注意:如果一个容器已经被启用了,那么容器运行时无法删除其镜像
# 运行惊醒busybox:1.35.0 创建容器后退出
[root@VM-20-6-centos ~]# docker run -it --name mybusybox6 busybox:1.35.0 sh
/ # ls
bin    dev    etc    home   lib    lib64  proc   root   sys    tmp    usr    var
/ # exit# 可以看到该容器正在停用
[root@VM-20-6-centos ~]# docker ps -a | grep busybox:1.35.0
cce740c20464   busybox:1.35.0   "sh"                     About a minute ago   Exited (0) About a minute ago                                             mybusybox6
acdc9b399f32   busybox:1.35.0   "bash"                   2 minutes ago        Created                                                                   mybusybox# 删除busybox:1.35.0 镜像
[root@VM-20-6-centos ~]# docker image remove busybox:1.35.0
Untagged: busybox:1.35.0# 发现无法删除
[root@VM-20-6-centos ~]# docker image remove busybox:1.35
Error response from daemon: conflict: unable to remove repository reference "busybox:1.35" (must force) - container acdc9b399f32 is using its referenced image dddc7578369a# 使用-f选项强制删除
[root@VM-20-6-centos ~]# docker image remove -f busybox:1.35
Untagged: busybox:1.35
Untagged: busybox@sha256:b4e4a06de46acc0958cd93e2eeb769077d255f06a7c3a91196509c16b7bc989e
Deleted: sha256:dddc7578369a0eb6d94c6eb359fb15cc807e2874fbd7e40614ed0b348c45fd2c# 强制删除成功
[root@VM-20-6-centos ~]# docker ps -a | grep busybox:1.35
[root@VM-20-6-centos ~]# docker ps -a | grep busybox:1.35.0

docker save [options] image [image…] 将指定镜像保存成tar归档文件

docker save [options] image [image...] 
options: -o 输出到指定文件
[root@VM-20-6-centos maxxin]# ll
total 0
[root@VM-20-6-centos maxxin]# docker images busybox
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
busybox      1.36.0    af2c3e96bcf1   2 weeks ago     4.86MB
busybox      1.34.0    8336f9f1d094   20 months ago   1.24MB# 保存一个镜像到mybusybox1.tar
[root@VM-20-6-centos maxxin]# docker save -o mybusybox1.tar busybox:1.36.0
[root@VM-20-6-centos maxxin]# ll
total 4980
-rw------- 1 root root 5097472 May 29 19:05 mybusybox1.tar
[root@VM-20-6-centos maxxin]# ll
total 4980
-rw------- 1 root root 5097472 May 29 19:05 mybusybox1.tar# 保存多个镜像到mybusybox2.tar 
[root@VM-20-6-centos maxxin]# docker save -o mybusybox2.tar busybox:1.36.0 busybox:1.34.0
[root@VM-20-6-centos maxxin]# ll
total 11396
-rw------- 1 root root 5097472 May 29 19:05 mybusybox1.tar
-rw------- 1 root root 6566912 May 29 19:06 mybusybox2.tar

docker load (写入,载入) 导入使用docker save 命令生成的.tar包

docker load [options]
--input, -i 指定导入文件,代替STDIN
--quiet, -q 精简输入信息[root@VM-20-6-centos maxxin]# docker images;
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE# 加载.tar包内部镜像, 加-q 选项输出信息会变少
[root@VM-20-6-centos maxxin]# docker load -i mybusybox2.tar
1f1d08b81bbe: Loading layer [==================================================>]  5.088MB/5.088MB
Loaded image: busybox:1.36.0
f6cb480bb44e: Loading layer [==================================================>]  1.463MB/1.463MB
Loaded image: busybox:1.34.0[root@VM-20-6-centos maxxin]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
busybox      1.36.0    af2c3e96bcf1   2 weeks ago     4.86MB
busybox      1.34.0    8336f9f1d094   20 months ago   1.24MB

docker history 显示镜像历史

docker history [options] image
-H --human : 大小和日期采用人易读的格式展现
--no-trunc : 显示全部信息
-q --quit: 只显示id[root@VM-20-6-centos maxxin]# docker history -H busybox:1.36.0
IMAGE          CREATED       CREATED BY                                      SIZE      COMMENT
af2c3e96bcf1   2 weeks ago   /bin/sh -c #(nop)  CMD ["sh"]                   0B        
<missing>      2 weeks ago   /bin/sh -c #(nop) ADD file:c22c6617fa9a85e0d…   4.86MB  

docker image prune 删除不使用镜像

docker image prune [options]
-a, --all # 删除全部不使用的镜像(容器不使用即被定义) --该选项非常危险
--filter  # filter(过滤器) 
-f --force # 不提示是否删除

Docker Image Operator

# docker 信息存储地址 /data/var/lib/docker
[root@VM-20-6-centos docker]# ll
total 44
drwx--x--x 4 root root 4096 May 29 19:01 buildkit
drwx--x--- 2 root root 4096 May 29 19:01 containers
-rw------- 1 root root   36 May 29 19:01 engine-id
drwx------ 3 root root 4096 May 29 19:01 image
drwxr-x--- 3 root root 4096 May 29 19:01 network
drwx--x--- 5 root root 4096 May 29 19:12 overlay2
drwx------ 4 root root 4096 May 29 19:01 plugins
drwx------ 2 root root 4096 May 29 19:01 runtimes
drwx------ 2 root root 4096 May 29 19:01 swarm
drwx------ 2 root root 4096 May 29 19:14 tmp
drwx-----x 2 root root 4096 May 29 19:01 volumes[root@VM-20-6-centos docker]# cd image
[root@VM-20-6-centos image]# ll
total 4
drwx------ 5 root root 4096 May 29 19:12 overlay2   # overlay2 是docker 的存储驱动scp mybusybox.tar root@IP:/data/maxxin

http://www.ppmy.cn/news/271494.html

相关文章

想要精通算法和SQL的成长之路 - 两两交换链表中的节点

想要精通算法和SQL的成长之路 - 两两交换链表中的节点 前言一. 两两交换链表中的节点 前言 想要精通算法和SQL的成长之路 - 系列导航 一. 两两交换链表中的节点 原题链接 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改…

Kernel: module: Invalid module format

https://www.man7.org/linux/man-pages/man3/memcmp.3.html 这个错误的报出点是kmod这个开源模块里的insmod.c: static const char *mod_strerror(int err) {switch (err) {case ENOEXEC:return "Invalid module format";出现ENOEXEC的地方是,说这个size 小于EI_…

Spring 依赖注入

一、 通过<property>和<constructor-arg>标签赋值注入&#xff0c;本质是set方法&#xff0c;详见Spring bean四种的创建方式以及作用域的设置 二、 通过命名空间p标签实现属性值&#xff0c;本质还是set方法&#xff08;古老&#xff0c;少见&#xff09; 1、xml中…

强化学习开篇-那些问123

1、强化学习的基本结构是什么&#xff1f; 智能体和环境。智能体基于当前状态&#xff0c;采取动作&#xff0c;环境给出反馈也就是奖励&#xff0c;再去更新当前的状态。 2、强化学习相对于监督学习为什么训练过程会更加困难&#xff1f; 监督学习的样本一般是相互独立的&am…

接口测试框架实战 | 通用 API 封装实战

接口测试仅仅掌握 Requests 或者其他一些功能强大的库的用法&#xff0c;是远远不够的&#xff0c;还需要具备能根据公司的业务流程以及需求去定制化一个接口自动化测试框架的能力。所以&#xff0c;接下来&#xff0c;我们主要介绍下接口测试用例分析以及通用的流程封装是如何…

中国传统色的雅称——你可知?

梅染、荼白、落栗、薄柿、酡颜、踯躅、曙色、缁色、鸦青、胭脂、若草、缟、缃色、竹青、苏芳、缥色、天水碧、月白、远山如黛、青梅煮酒、桥下春波。 这些颜色的名字&#xff0c;是不是看着美极了。 中国传统颜色的雅称&#xff0c;你都知道吗&#xff1f; 梅染 梅染顾名思义&a…

分享一组超喜欢的粉色樱花高清壁纸~

向往漫天的樱花&#xff1f;想要一款治愈系的桌面大图&#xff1f;推荐粉色樱花高清壁纸给大家使用&#xff0c;壁纸粉色设计&#xff0c;温婉柔和超治愈&#xff0c;为您带来好心情

多套头像/壁纸/背景图资源微信小程序源码 粉色UI 带流量主

云开发版粉色UI微信小程序源码&#xff0c;背景图、头像、壁纸小程序源码&#xff0c;带流量主功能。 云开发小程序源码无需服务器和域名即可搭建小程序另外还带有流量主功能噢&#xff01;微信平台注册小程序就可以了。 这套粉色UI非常的好看&#xff0c;里面保护有背景图、…