首页 > 其他分享 >【Docker】Dockerfile 指令对 Docker 镜像层数的影响

【Docker】Dockerfile 指令对 Docker 镜像层数的影响

时间:2024-10-30 17:18:47浏览次数:6  
标签:RUN tar demo 分层 层数 镜像 Docker Dockerfile

本文内容均来自个人笔记并重新梳理,如有错误欢迎指正!

如果对您有帮助,烦请点赞、关注、转发、订阅专栏!


专栏订阅入口

| 精选文章 | Kubernetes | Docker | Linux | 羊毛资源 | 工具推荐 |


往期精彩文章

【Docker】(全网首发)Kylin V10 下 MySQL 容器内存占用异常的解决方法

【Docker】(全网首发)Kylin V10 下 MySQL 容器内存占用异常的解决方法(续)

【K8s】专题十四(1):Kubernetes 安全机制之 RBAC


目录

一、背景介绍

二、演示过程

1、非精简指令构建镜像

2、精简指令构建镜像

三、写在最后


一、背景介绍

【Docker】专题三:Dockerfile 相关 中提到,Dockerfile 中的部分指令(如 RUN、COPY、ADD)在构建 Docker 镜像时会增加镜像的层数。本文将以 RUN 指令为例,进一步演示和分析其对 Docker 镜像层数的影响效果。


二、演示过程
1、非精简指令构建镜像
  • Dockerfile-1 文件内容如下
# 指定基础镜像
FROM alpine

# 指定 RUN 指令(两条命令,分别实现创建文件、删除文件)
RUN echo "This is demo_content" > /tmp/1.txt
RUN rm -rf /tmp/1.txt
  • 构建 Docker 镜像
docker build -t alpine:demo-1 -f Dockerfile-1 . 
  • 查看 Docker 镜像分层信息
docker history alpine:demo-1 --no-trunc

  • 查看 Docker 镜像分层 ID
    • 如图,该镜像有三个 layer 分层
      • 第一个分层:表示基础镜像
      • 第二个分层:对应第一条 RUN 指令,我们记录该镜像分层的 ID
      • 第三个分层:对应第二条 RUN 指令
alias dive="docker run -ti --rm -v /var/run/docker.sock:/var/run/docker.sock wagoodman/dive"
dive alpine:demo-1

  • 查看 Docker 镜像分层文件
# 将 Docker 镜像保存为 tar 文件
docker save alpine:demo-1 -o demo-1.tar

# 查看 tar 文件内容
tar -xf demo-1.tar
cd 0e5986017b9df1a7163da7e70a44e72d951ddfebaf2b157eddcf00439bc76ebb
tar -xf layer.tar
cat tmp/1.txt

标签:RUN,tar,demo,分层,层数,镜像,Docker,Dockerfile
From: https://blog.csdn.net/2401_82795112/article/details/143304849

相关文章

  • Docker快速部署snipeit(Mac机)
    前提安装好mysql和docker环境(很多地方需要db统一的方便管理)官方操作手册1.拉取配置文件curlhttps://raw.githubusercontent.com/snipe/snipe-it/master/docker-compose.yml--outputdocker-compose.ymlcurlhttps://raw.githubusercontent.com/snipe/snipe-it/master/.env.......
  • docker 安装gitea后,查找对应配置文件路径
    不能直接在系统的根目录访问/data/gitea/conf/app.ini,因为这个路径通常是在Docker容器内的。如果你想在主机上访问这个文件,必须首先确认它是否已挂载到主机的某个目录。如果你想访问app.ini,请按照以下步骤操作:检查Docker容器的挂载:使用以下命令查看容器的详细信息,特别......
  • 如何在PVE环境中安装Docker:选择LXC容器还是虚拟机方案
    原文参考:https://www.oryoy.com/news/rong-qi-hua 在当今的云计算和虚拟化技术中,ProxmoxVE(PVE)作为一种强大的开源虚拟化平台,受到了许多系统管理员和开发者的青睐。而在PVE环境中安装Docker,成为了许多用户的需求。本文将详细探讨在PVE环境中安装Docker的两种主要方案:使用LXC容......
  • docker 容器如何固定ip,有几种方式
    在Docker容器部署过程中,有时需要为容器分配固定的IP地址,以便进行持久化的服务配置、简化网络管理或实现特定的网络策略。给Docker容器分配固定IP的方法主要有两种:通过创建自定义网络和使用第三方网络插件。其中,使用自定义网络是Docker官方推荐的方法,既简单又方便。自定义网络法:当......
  • 华为云安装docker
    华为云安装docker最近搞了台华为云服务器,系统为CentOS8.2,然后想要先装个docker,这里简单记录下过程1.网上方法1.卸载系统之前可能安装的docker(防止冲突)卸载系统之前可能安装的docker(防止版本不一致,发生冲突)sudoyumremovedocker\docker-client\docker-client-......
  • Docker Compose 开发笔记
    什么是DockerCompose?DockerCompose是一个工具,用于定义和运行多容器Docker应用程序。通过docker-compose.yml文件,你可以配置应用程序的服务、网络和卷等。基本结构docker-compose.yml文件通常包含以下几个部分:1.版本指定DockerCompose文件的版本。version:'3'......
  • 如何使用Docker容器化部署数据科学应用
    在文章开头段落直接回答标题所提问题,字数要求120~200字之间(核心观点加粗,用“、”隔开)并对其中一点展开详细描述。使用Docker容器化部署数据科学应用主要涉及以下几个关键步骤:创建Dockerfile、构建Docker镜像、启动容器、管理容器。首先,开发者需要创建一个Dockerfile来定义环境配......
  • 安装docker
    更新系统包```shellsudoyumupdate-y```添加DockerCE仓库```shellsudoyuminstall-yyum-utilsdevice-mapper-persistent-datalvm2sudoyum-config-manager--add-repohttps://download.docker.com/linux/centos/docker-ce.repo```安装DockerCE```shellsu......
  • Docker运行环境安装
    作者:京东科技林中Docker是一个开放的平台,用于开发、发布和运行应用程序。Docker分离了应用程序和运行应用的基础设施,从而实现了软件的快速交付。利用docker提供的一系列功能,包括构建、发布、测试和部署,可以帮助开发人员将最新版本代码应用到生产环境中。Docker可以安装在多个平......
  • vins-fusion gpu, docker, opencv4.5.4(cuda) 复现
    代码:https://gitee.com/zheng-yongjie/vins-fusion-gpu-cv4?skip_mobile=true硬件:jetsonxaviernx,系统20.04nvcc-V可查看cuda版本本文在docker里面复现1.opencvcuda安装root@ubuntu:~#pwd/rootwget-Oopencv-4.5.4.ziphttps://github.com/opencv/opencv/archi......