Docker Image(镜像)

Docker镜像是什么

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

为什么需要镜像

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

镜像命令

命令 别名 功能
docker images docker image ls
docker image list
列出本地镜像
docker tag docker image tag 给镜像打标签,常用于推送镜像仓库
docker pull docker image pull 从镜像仓库中拉取镜像
docker push docker image push 推送镜像到仓库
docker rmi docker image rm
docker image remove
删除本地镜像
docker build docker image build 通过dockerfile制作镜像
docker save docker image save 将指定镜像保存成tar归档文件
docker load docker image load 导入使用docker save命令导出的镜像
docker image insepect 查看镜像详细信息
docker history docker image history 查看镜像历史
docker import docker image import 从归档文件docker export中创建镜像
docker image prune 删除不使用的镜像

docker images

docker images [options] [repository[:tag]]

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

image.png

docker image inspect

查看镜像详细信息

docker image inspect [options] image [image...]

image.png

docker tag

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

docker tag source_image[:tag] target_image[:tag]

image.png

docker rmi

删除镜像,对于使用的镜像需要先清理容器再删除镜像

docker rmi [options] image [image...]

参数
  • -f:强制删除
  • –no-prune:不移除该镜像的过程镜像,默认移除

image.png

docker save

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

docker save [options] image [image...] 

参数
  • -o:输出到哪一个文件

image.png

docker load

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

docker load [options]

参数
  • -i:指定导入的文件
  • -q:精简输出信息

image.png

docker history

显示镜像历史

docker history [options] image

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

image.png
这是构建nginx镜像“盖的楼”(上面提的联合文件系统)

docker image prune

删除不使用的镜像,有两种含义一种是删除悬虚镜像,另一种是删除没被使用的容器。

docker image prune [options]

参数
  • -a:删除全部不使用的镜像(也就是没被使用的容器)
  • –fitter:指定过滤条件
  • -f:强制删除

image.png

镜像操作案例

查找镜像

docker search busybox

但是该命令无法查看到tag,因此大多是去docker hub查看
image.png

拉取镜像

image.png

查看镜像及列表存储信息

image.png
查看镜像仓库在本地的存储信息,进入/var/lib/docker/image目录,查看overlay2/repositories.json文件

cd /var/lib/docker/image
cat repositories.json

image.png

查看镜像详情

image.png

查看镜像分层

image.png

打标签

image.png

推送到仓库

image.png

运行容器

image.png
image.png

删除镜像

先要退出busybox
image.png
并没有出现delete,只是把tag删除掉
docker ps -a看看
image.png
image.png
还有镜像没有删除掉
image.png
无法让我们删除掉,是因为刚才我们启动了容器去跑这个镜像,所以要把这个容器删除掉
image.png
镜像删除成功

相关推荐

  1. DOCKER镜像

    2024-01-25 13:16:01       59 阅读
  2. 内核镜像

    2024-01-25 13:16:01       34 阅读
  3. dockerdesktop 导出镜像,导入镜像

    2024-01-25 13:16:01       55 阅读
  4. Docker镜像制作之ZLMediakit镜像制作

    2024-01-25 13:16:01       56 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-25 13:16:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-25 13:16:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-25 13:16:01       87 阅读
  4. Python语言-面向对象

    2024-01-25 13:16:01       96 阅读

热门阅读

  1. k8s之安全机制

    2024-01-25 13:16:01       43 阅读
  2. K8S之HPA

    K8S之HPA

    2024-01-25 13:16:01      48 阅读
  3. 根目录逃逸Yaml

    2024-01-25 13:16:01       56 阅读
  4. HJ11 数字颠倒【C语言】

    2024-01-25 13:16:01       49 阅读
  5. linux系统nginx监控的使用

    2024-01-25 13:16:01       65 阅读
  6. P5469 [NOI2019] 机器人 洛谷黑题题解

    2024-01-25 13:16:01       41 阅读
  7. 【笔记】Helm-4 最佳实践-3 模板

    2024-01-25 13:16:01       59 阅读
  8. 使用 git rebase 合并多个 commit

    2024-01-25 13:16:01       48 阅读
  9. openssl3.2/test/certs - 043 - 4096-bit leaf key

    2024-01-25 13:16:01       60 阅读
  10. v-if 导致 elementui 表单校验失效问题解决

    2024-01-25 13:16:01       52 阅读