Docker Image(镜像)

“脚印会旧而梦还在走” 


Docker 镜像介绍

(1) 如何理解镜像?

🎯 docker image本质就是一个 read-only(只读)文件,这个文件包含了文件系统、源码、库文件、依赖文件、工具等一些运行 application 所必须的文件。

🎯 我们也可以把docker image理解成一个模板,根据这个模板可以实例化出很多 “容器”。至于容器是什么?这里我们就简单理解成一个 "独立的操作系统+应用程序" 即可。

🎯 在image中是一层层文件系统 Union FS。联合文件系统,可以将几层目录挂载到一起,形成一个虚拟文件系统。每一层文件系统就叫做当前层的 “layer“。例如,我们可以在docker hub随意举例一个镜像文件:

注: 联合文件系统可以对每一层文件系统设置三 种权限,只读(readonly)、读写(readwrite)和写出(whiteout-able),但是 docker镜像中每一层文件系统都是只读的

镜像分层       

        在构建镜像的时候,都是从一个最基本的操作系统开始的。每个构建的操作都相当于做一层的修改,增加了一层文件系统。于是,一层层往上叠加,上层的修改会覆盖底层该位置的可见性。

         这种构建的过程就类似于装地暖。我们人仅仅是能感受到表层木板,但不知道模板下还填了钢筋水泥层、加保温层,采暖管等。

为什么需要镜像?

        Docker镜像本质就是一个”可读文件“,所以Docker镜像天然就具有 “打包”的功能。

        往往我们的生产环境与研发环境是不一样的,为了正确地迁移、部署,我们需要做很多麻烦的工作。Docker镜像就像一个压缩包一样,它自身内部就具有一个完整的操作系统所有文件和对应的目录结构,与本地环境没有任何的关联性,从而屏蔽掉了环境的差异性。

        docker 镜像提供了一种打包应用程序和预配置服务器环境的便捷方式可以很方便地将其用于个人用途或与其他 Docker 用户公开共享

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

Docker 命令详解:

🧩 docker images

语法:

# 列出本地镜像
docker images [OPTIONS] [REPOSITORY[:TAG]]

OPTIONS:
-a :列出本地所有的镜像
--digests :显示镜像的摘要信息
-f :显示满足条件的镜像
--format :指定返回值的模板文件
--no-trunc :显示完整的镜像信息
-q :只显示镜像 ID

🧩 docker tag 

语法:

# 标记本地镜像,将其归入某一仓库
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

        

🧩 docker rmi

语法:

# 删除镜像
docker rmi [OPTIONS] IMAGE [IMAGE...]

OPTIONS:
○ -f :强制删除
○ --no-prune :不移除该镜像的过程镜像,默认移除

        如果是删除标签,仅仅是将这个标签借关联。直到删除镜像,才会真正将这个镜像删除。

🧩 docker save

语法:

# 将指定镜像保存成 tar 归档文件
docker save [OPTIONS] IMAGE [IMAGE...]

OPTIONS:
-o :输出到的文件

         我们想要将这两个镜像打包归档:

        通过命令生成.tar文件

🧩 docker load

语法:

# 导入使用 docker save 命令导出的镜像
docker load [OPTIONS]

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

        我们将之前的本地镜像删除。

        我们再通过指定导入.tar包,加载镜像文件。

🧩 docker image inspect 

# 查看镜像详细信息
docker image inspect [OPTIONS] IMAGE [IMAGE...]

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

        

🧩 docker history

语法:

# 显示镜像历史
docker history [OPTIONS] IMAGE

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

        这些镜像历史通常就是显示出这个镜像文件历史 layer层。

🧩 docker image prune

语法:

# 删除不使用的镜像
docker image prune [OPTIONS]

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

        这些镜像没有被使用过,所以就会被删除。这个命令需小心谨慎地使用,以防误删。

        至于docker build与镜像制作有关 、docker import本质就是生成当前容器的快照版本,则不是本篇要细说的。


镜像操作案例

        我们已经习得docker镜像命令的使用。所以本小节就是以使用busybox镜像对这些命令操作进行使用、回顾。

什么是busybox?

        BusyBox是一个集成了三百多个最常用Linux命令和工具的软件。

拉取镜像

docker pull busybox:1.36.0

        成功拉取下来。

查看镜像详情

docker image inspect busybox:1.36.0

查看镜像分层 

docker history busybox:1.36.0

打标签 

docker tag busybox:1.36.0 registry.cn-chengdu.aliyuncs.com/wgzzs/test_registry:v1.0

推送镜像

docker login registry.cn-chengdu.aliyuncs.com

        首先需要登录认证。

docker push registry.cn-chengdu.aliyuncs.com/wgzzs/test_registry:v1.1

        完成推送 

运行容器

docker run -it --rm busybox:1.36.0

        我们可以再容器中的命令行输入 busybox为我们打包的linux命令。

镜像删除 

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

docker rmi busybox:1.36.0


本篇到此结束,感谢你的阅读。

祝你好运,向阳而生~ 

相关推荐

  1. DOCKER镜像

    2024-02-23 15:14:03       35 阅读
  2. 内核镜像

    2024-02-23 15:14:03       13 阅读
  3. dockerdesktop 导出镜像,导入镜像

    2024-02-23 15:14:03       39 阅读
  4. Docker镜像制作之ZLMediakit镜像制作

    2024-02-23 15:14:03       43 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-23 15:14:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-23 15:14:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-23 15:14:03       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-23 15:14:03       20 阅读

热门阅读

  1. ByteTrack算法原理解析

    2024-02-23 15:14:03       24 阅读
  2. C++11 Thead线程库的基本使用

    2024-02-23 15:14:03       34 阅读
  3. k8s的pod调度之节点选择器

    2024-02-23 15:14:03       28 阅读
  4. 在Ubuntu等linux系统中用wget下载的方法

    2024-02-23 15:14:03       31 阅读
  5. ChatGPT法律咨询提示

    2024-02-23 15:14:03       24 阅读
  6. 【PostgreSQL】PostgreSQL详细介绍

    2024-02-23 15:14:03       37 阅读
  7. 代码随想录算法训练营29期Day58|LeetCode 392,155

    2024-02-23 15:14:03       33 阅读
  8. pytest+yaml【接口测试框架】需要解决的问题:

    2024-02-23 15:14:03       26 阅读
  9. 设计模式-单例模式(Singleton Pattern)

    2024-02-23 15:14:03       28 阅读
  10. Jenkins

    2024-02-23 15:14:03       30 阅读
  11. c语言中的大小写字母转换怎么转?

    2024-02-23 15:14:03       28 阅读
  12. QDialog_trial_1

    2024-02-23 15:14:03       28 阅读