问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

dockerfile 基础镜像 有哪些

发布网友 发布时间:2022-04-28 13:53

我来回答

1个回答

热心网友 时间:2022-04-11 09:00

当想让一个容器做两件事情,或者使一个Docker镜像包含来自两个不同镜像的依赖库时,就需要知道每个镜像的Dockerfile。本文介绍了如何通过docker history命令来对Docker镜像进行反向工程,得到它们的Dockerfile,并组织到一个Dockerfile里然后build,从而实现想做的事情。

常言道,“不要重复发明轮子!”

在使用Docker时,构建自己的镜像之前,最好在Docker Hub寻找一些可以直接使用的镜像做练习。把软件架构分布到一系列容器中,每一个容器只做一件事情,这样的效果非常好。构建分布式应用的最好的基石是使用来自Docker Hub的官方镜像,因为可以信任它们的质量。

在某些情况下,可能想让一个容器做两件不同的事情。而在另外一些情况下,可能想让一个Docker镜像包含来自两个不同镜像的依赖库。如果有每个镜像的Dockerfile,这是非常简单的。将它们组织到一个Dockerfile里然后build就行。

然而,大多数时间都在使用Docker Hub上准备好的镜像,不会有它们的源Dockerfile。我花时间找一个可以合并(或flatten)两个不同Docker镜像的工具,当然没有它们的Dockerfile。也就是说在找一个能做下面这件事的东西:
image 1 --
\
---> merged_image_12
/
image 2 --

此前在GitHub上有两个相关的讨论(1、2),尽管它们都被关闭了。

这可能吗?
那么,是否存在工具能够像这样做吗:docker merge image2 image2 merged_image?

没有!
你甚至不可以用下面的方式来构建Dockerfile:
FROM image1
FROM image2

简而言之,在一个Dockerfile里不能有多个基础镜像。

但是我需要这个功能!
唯一的解决办法是取得这些镜像的Dockerfile,然后把它们组织到一个文件中,再进行构建。那么,我能在Docker Hub上获得一个镜像的Dockerfile吗? 幸运的是可以。它不能离线获取(译注:原文是online,但显然online时对于来自GitHub的自动构建镜像是可以直接获取的),但是你可以使用docker history命令,通过反向工程获取。

怎么来使用?
在你的机器上使用docker pull从Docker Hub下载镜像。
docker pull image1
docker pull image2

然后使用docker history来取得构建这两个容器时运行的命令。
docker history --no-trunc=true image > image1-dockerfile
docker history --no-trunc=true image2 > image2-dockerfile

接下来打开这两个文件,你可以看到每个镜像的命令堆栈。这是因为Docker镜像通过层(阅读更多)的方式来构建。即你在Dockerfile中键入的每一个命令所构建的新镜像,都是在之前的命令产生的镜像之上。所以你可以对镜像进行逆向工程。

*
不能对镜像进行反向工程的唯一场景,是镜像的维护者在他的Dockerfile中使用了ADD或COPY命令。你会看到这样一行:
ADD file:1ac56373f7983caf22
或 ADD dir:cf6fe659e9d21535844
这是因为不知道维护者在他自己的机器上,包括镜像里使用了什么本地文件。
如何使用Dockerfile创建镜像

首先,创建一个基础的Dockerfile,它包含多个关键指令。FROM指令指定了镜像的基础,如FROM alpine:3.14,后续指令在此基础上进行。VOLUME用于设置数据卷,EXPOSE则声明了容器中公开的端口。一个基本的Dockerfile结构如:FROM > VOLUME > EXPOSE。Dockerfile中的指令,如FROM、RUN、CMD、LABEL、ENV和ARG,每...

altair hyperworks软件介绍

正版Hyperworks软件多少钱,购买正版Hyperworks软件,免费咨询Altair Hyperworks软件中国区网站首页,HyperWorks软件提供了完整的CAE有限元分析解决方案,免费试用和咨询官网。

利用dockerfile 文件执行 docker build 自动构建镜像

Dockerfile是一种脚本文件,通过一系列指令如FROM、RUN、ENV和COPY等,指导Docker守护进程生成镜像。FROM指令指定基础镜像,后续指令在此环境上运行;RUN用于执行shell命令,多个RUN可以合并以提高效率;ENV设置环境变量,会影响容器运行时;COPY用于复制宿主机文件到镜像,ADD则能解包文件。例如,使用FROM nginx...

使用Dockerfile基于1.20镜像搭建Nginx微服务环境

Nginx有许多标签,福哥选择1.20版本。首先拉取镜像,启动临时容器查看内部结构。发现配置文件在/etc/nginx/nginx.conf。使用curl测试,能看到Nginx默认首页。停止、删除临时容器。福哥将设置命令整理至Dockerfile,方便通过Dockerfile安装环境。默认nginx.conf在/etc/nginx/conf.d/下,default.conf内提供Apach...

如何用Dockerfile创建镜像

1.docker大体上按照如下流程执行dockerfile中的指令:docker从基础镜像运行一个容器 执行一条指令,对容器做出修改 执行类似docker commit的操作,提交一个新的镜像层 docker再基于刚提交的镜像运行一个新的容器 执行dockerfile中的下一条指定,直到所有指令都执行完毕。例子:mkdir static_web vim Dockerfi...

怎么创建docker镜像

Dockerfile是创建Docker镜像的核心文件。它包含了一系列指令,用于定义镜像的行为和配置。例如,可以使用FROM指令指定基础镜像,使用RUN指令在镜像中安装软件包,使用COPY指令复制本地文件到镜像中,使用CMD或ENTRYPOINT指令指定容器启动时要执行的命令等。构建镜像 编写完Dockerfile后,需要在Dockerfile所在的目录...

Alpine、Debian、Ubuntu、Centos,谁是最佳选择?

Alpine镜像最小(108MB),其次是Ubuntu(548MB),Debian(124MB),CentOS(231MB)。通常推荐使用Alpine以减小镜像体积。实践建议 在选择基础镜像时,首先在Docker Hub查找官方或合适的镜像,如基于python:3.11.9-alpine3.19构建。根据需要,使用对应的包管理工具在Dockerfile中安装软件包。总结来说,...

请问springboot多模块项目如何打包为1个docker镜像?

首先,在项目根目录下创建Dockerfile文件,用于定义构建步骤和配置。接着,在Dockerfile中指定一个适合的基础镜像,如使用openjdk:11-jdk作为Java应用程序的基础镜像。将编译好的应用程序文件,如可执行jar文件,复制至Docker镜像中。设置镜像中的工作目录为应用程序所在路径,并暴露应用程序监听的端口。定义...

如何查看docker 镜像的dockerfile

1. 选择Debian 官方镜像的大多数Dockerfile,不管是直接还是通过其他镜像,都是基于Debian的。Dockerfile版本通常跟特定的发行版挂钩,正常是使用稳定版(wheezy),有些是测试版(jessie),还有是不稳定版(sid)。Debian镜像的主要好处是文件小,加起来才85.1MB,而Ubuntu要200MB。指定准确的发行版可以预防...

docker镜像由什么组成

Docker镜像由以下几个主要部分组成:1. 镜像基础层(Layers):Docker镜像基于一组基础层创建,这些基础层可以是不同的操作系统或文件系统。2. 文件系统(Filesystem):每个Docker镜像都有一个或多个文件系统,用于存储应用程序代码、配置文件、数据等。3. 标签(Tags):标签是用来标识镜像的特定版本或...

部署:Docker部署自己的C/C++程序

Dockerfile脚本如下:脚本中首先指定了基础镜像,然后在镜像中安装了一些工具,并创建了目录/opt/ls1000。接着将本地文件夹ls1000下的所有文件和目录拷贝到镜像的/opt/ls1000目录下。给自己的程序和库文件添加可执行权限,并将第三方库拷贝到系统目录中,使配置生效。最后,移除安装工具遗留的不必要文件。

声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
吕布被杀后,他的方天画戟去哪儿了? 吕布的兵器最后去哪了 为什么iphone4升级到6.1以后,WIFI上网卡的很? ...到6.0.1后数据线插电脑没反应了。手机是iphone4,是从6.0升级的。没... ...雨林木风 GHostXp 自带office2003,但是现在卸载不了,装了2007后总... iPhone4iOS6.0.1买苹果商店里的东西要升级到最新的系统,所以每个游戏... iphone4s升级到IOS6.0.1的时候无线局域网就变wi-Fi了!!打不开!!是版 ... ...32Z6DP0N IMEI :013131005794969 激活日期我咋么看不到 苹果4序列号帮忙查一下,谢谢,坐等:C7GJF07YDP0N 我的苹果4的序列号是C7GJ20S7DP0N查一下是不是翻新机 婚礼主题名称 ,名字在一起最好,也可以是浪漫点的 最好有寓意 名字是刘笑南 王思文 淘米水洗脸有什么好处 淘米水洗脸的好处有哪些 拼多多活动为什么有些宝贝折扣很低? 为什么拼多多的东西很便宜? iphone5s用网易云音乐下载的歌曲,手机一锁屏就不能正常播放,但不锁屏... ...比如网易云音乐,我关屏之后直接闪退,这应该怎么办呢 我的手机是vivox23 为什么我用网易云音乐听歌,只要锁屏了音乐就会中止... 网易云音乐锁屏后无法播放怎么办? mini敞篷下雪天会不会压坏 小花仙和魔卡少女樱哪个好看?我听小花仙群里的人说小花仙现在人气值都超过魔卡少女樱了?请问这是真的吗 三国杀ol的玩家真是一帮沙比 软顶敞篷优缺点及硬顶敞篷优缺点 奥迪A5的软敞篷开关次数多了容易坏吗? 哔哔叨啥意思? 软顶敞篷车是不是都容易坏!主要是怕上门漏水弄坏车子!不敢买这种车了 你脑子有问题是骂人吗? 有些车子明明是敞篷的 天气又好 为什么有些车主就是不敞篷 是容易坏吗 老婆高速开车,副驾的老公一直哔哔哔,结果悲剧了··· 软顶敞篷容易坏吗 婚礼主题名称大全 请大家帮我想一个有创意的婚礼主题,新郎名字带秋,新娘名字带燕(燕可谐音) 求带名字的婚礼主题 求一中式或新中式婚礼主题的名字 !! 可不可以通过一个ISO的系统镜像来制作一个Docker的基础镜像_百度... 征求一个寓意深刻的婚礼主题词,带上双方名字中的一个字 ~~ 求!!婚礼主题名字! 康佳电视维修方法简介 带“”山 “”字和“家”寓意好的婚礼主题名,谐音也可以,麻烦大家帮我想想。 用人名设计一个婚礼主题 谁能告诉我婚礼的内涵意义啊 就像酒店婚礼 教堂婚礼 有什么主题吗? 康佳电视保修期间屏幕坏了怎么维修? 黑色运动裤弄上油好多天了怎么洗掉? 康佳电视黑屏但是有声音,维修怎么办? 申请网商贷怎么要录入房产信息? 康佳电视维修价格表 黑色的裤子埋汰了,有油点子。怎么洗能洗干净 黑裤子上弄了一大片的油渍,怎样可以除去? 科目二落考了电子签名没有点确认下回可以预约吗? 科目一过了,也电子签字了,但那个教官没有点保存就直接点确认了,请问有问题没有???
  • 焦点

最新推荐

猜你喜欢

热门推荐