Docker Image(镜像)

概念

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

为什么需要镜像

在部署应用时,通过手工或写一些脚本的方式进行部署。这样部署面临问题就是云端和本地环境一致问题。用户为每个应用打包过程比较繁琐,需要配置和给中修改等操作,非常费劲。
然而, Docker 镜像就是为了解决这个小小的 打包 功能,突然一夜之间成名。 它是如何解决 Paas 时代所面临的云端和本地一致性问题?很简单,它是把一个镜像制作成一个完整的操作系统所有文件和对应的目录结构,这样的压缩包是跟你本地和测试环境用的操作系统一摸一样。
docker 最大的贡献就是定义了容器镜像的分层的存储格式 docker 镜像技术的基础是联合文件系统(UnionFS) ,其文件系统是分层的。这样既可以充分利用共享层,又可以减少存储空间占用。
docker 镜像提供了一种打包应用程序和预配置服务器环境的便捷方式,可以很方便的将其用于个人用途或与其他 Docker 用户公开 共享
作用说明
标准化应用打包将应用代码、运行时环境、依赖库、系统工具等完整打包成一个不可变的镜像文件。
环境一致性解决“在我机器上能跑,线上却失败”的问题,确保开发、测试、生产环境完全一致
快速部署与扩展秒级启动容器,支持横向扩展(如 Kubernetes 基于镜像快速部署多个实例)。
版本控制与回滚通过镜像标签(如 v1.0latest)管理版本,随时回滚到历史版本。
依赖隔离每个容器基于镜像独立运行,避免依赖冲突(如 Python 2/3 共存)。

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

先查看配置文件 /etc/docker/daemon.json 设置的数据储存目录在哪里,默认为 /var/lib/docker。

cat /etc/docker/daemon.json

这里我是更改到  /data/var/lib/docker 目录下,然后就可以进入该目录下,可以看到 /overlay2 文件夹,该文件夹中记录已拉取镜像文件的信息。

镜像命令详解

命令
别名
功能
docker imagesdocker 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 inspect查看镜像详细信息
docker history
docker image history
查看镜像历史
docker import
docker image import
从归档文件 docker export 中创建镜像
docker image prune
删除不使用的镜像

docker images

功能:列出本地镜像。

语法:

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

别名:

docker image ls, docker image list

关键参数:

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

样例:列出本地全部镜像

docker images

docker tag

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

语法:

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

别名:

​​​​​​​docker image tag

样例:

docker tag nginx:1.27.0-perl crpi-u3d7h19iifo9g57h.cn-shenzhen.personal.cr.aliyuncs.com/lbk_repository/mytest:mynginx_1.27.0

docker rmi

功能:可以根据 id 和名字删除镜像,对于使用的镜像需要先清理容器再删除镜像。
语法:
docker rmi [OPTIONS] IMAGE [IMAGE...]
别名:
docker image rm, docker image remove
关键参数:
  • -f :强制删除;
  • --no-prune :不移除该镜像的过程镜像,默认移除;
样例:

docker save

功能:将指定镜像保存成 tar 归档文件。
语法
docker save [OPTIONS] IMAGE [IMAGE...]
别名:​​​​​​​
docker image save
关键参数:
  • -o :输出到的文件。
样例:
docker save -o mynginx_1.27.5.tar nginx:1.27.5

​​​​​​​

docker load

功能:导入使用 docker save 命令导出的镜像,docker save 和 docker load 命令通常配合 scp 命令使用来进行镜像的拷贝,该命令是 Linux 系统中基于 SSH 的安全文件传输命令,用于在本地主机和远程主机之间加密传输文件或目录
语法:
docker load [OPTIONS]
别名
docker image load
关键参数:
  • --input , -i : 指定导入的文件,代替 STDIN
  • --quiet , -q : 精简输出信息。
样例:

 docker image inspect

功能:查看镜像详细信息

语法:

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

样例:查看镜像详细信息

docker image inspect nginx:1.27.5

docker history

功能:显示镜像历史。
语法:
docker history [OPTIONS] IMAGE
别名:
​​​​​​​docker image history
关键参数:
  • -H , --human :大小和日期采用人容易读的格式展现
  • --no-trunc :显示全部信息,不要隔断;
  • -q, --quiet: 只显示镜像 id 信息;
样例:
docker history nginx:1.27.5

docker import

功能:从归档文件中创建镜像,其功能与 docker load 类似。
语法:
docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
别名
docker image import
关键参数:
  • -c :应用 docker 指令创建镜像;
  • -m :提交时的说明文字;
样例:​​​​​​​
docker import mynginx_1.27.5.tar mynginx

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 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我要满血复活

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值