怎么让创建镜像的体积比SD的存储镜像技术空间小?

博客访问: 5647
博文数量: 12
注册时间:
认证徽章:
分类: 云计算与虚拟化 11:52:46
本文来源:ghostcloud翻译
说到,可能大家都不陌生了,我们可以用技术将应用以及所有的依赖项打包到一个镜像中,然后把这个镜像部署到容器中运行。这里就有一个问题,因为我们在打包的时候往往会把一些杂七杂八非必要的东西也打包进去,所以最后构建出来的镜像就很庞大,直接导致我们的容器也变得很大。对于刚入门的新手来说,大家一开始基本都是用的官方镜像仓库里提供的基础镜像,可惜的是,这些基础镜像通常都包含了很多我们用不着的文件,有的时候我们的镜像明明可以建得很小,但是用这些基础镜像来构建我们自己的镜像的话,最后建下来文件体积都会变得超大。比方说,如果我们用官方的镜像来建自己的应用镜像,那么构建下来镜像文件的体积肯定是在以上,因为官方的镜像本来就有那么大。
大家不信可以试试看。我用官方的镜像建了一个的应用镜像,这个应用够简单了吧,可是这么简单的一个应用,镜像却有。
这个也太大了,我的应用加上依赖项总共还不到,的运行时环境大概是,剩下的到底是什么鬼?!这种大小是无法接受的。那么问题来了,有没有什么办法可以让镜像文件小点呢?
关于微容器
答案是肯定的。这里我要向大家隆重推荐微容器,通过微容器我们就可以完美解决上面说的问题了。微容器只包含了运行应用必需的库文件和开发语言依赖项,还有就是应用本身,其他的统统不包含。
构建微镜像的时候,大家不用像以前一样从那种大而全的基础镜像开始搭建,只要根据自己的需求,先从最基本的应用开始,逐步添加依赖项就可以了。
还是以上面的应用为例,这次我找了一个很小的基础镜像,然后添加了和一些必要的依赖项,最后建下来镜像的大小只有,比前面的多整整小了倍!
上面是普通镜像和微镜像体积对比图,大家自己感受下。
大家可以把两种镜像构建方式都试一下,用同一个应用,分别运行和,看看最后得出的镜像大小有什么差别。
微容器的优势
说了这么多,到底微容器有哪些优势呢?
体积更小。微容器的体积都很小,从上面那个例子大家可以看到,我们不用改任何代码,就能把镜像体积缩小到普通镜像的分之一。
部署更快,更简便。因为镜像体积大大减小了,从之类的镜像仓库下载镜像的速度就会快很多,我们就可以更快地部署镜像到各台主机上。
安全性更高。微容器里包含的代码和程序更少,攻击面也就更窄,所以底层的安全性也就相应地提升了。
从优点上看微容器跟很像,但是微容器没有的那些短板,总体来说要优于。
微容器构建教程
所有镜像都是以镜像为基础创建的。镜像是一个空的镜像文件,虽然看起来好像没什么用处,但特别适合用来创建超级小的镜像。如果我们在编译的时候可以像或者语言编译那样,把应用编译成没有依赖项的静态二进制文件,那最后创建出来的镜像体积就很完美了。比方说,我创建了一个镜像,其中包含了一个的应用,整个镜像包括应用在内总共才。
由此可见,通过镜像应用的二进制文件的方式,我们就可以构建出极小化的镜像。
不过语言毕竟还是比较小众的,也不是所有人都会用,所以大家在创建镜像的时候可能还是或多或少的要打包一些依赖项,这个时候镜像就不能满足需求了,推荐大家有这方面问题的都使用。是一个面向安全应用的轻量级发行版,是在和的基础上构建的。多的话我也不说了,大家可以自己去找相关的文章来看,这里我想说的是,轻量才是王道,基础镜像的大小只有:
是一个很不错的操作系统,在此基础上我们再将各种依赖项打包到系统中,就可以构建一个完备的轻量级镜像了。就以上面的应用为例,因为我们只需要用到,所以只要添加包就可以了。我们可以用下面的来构建镜像:
这样创建出来的镜像只包含以及一些必要的依赖项。怎么样,够简洁吧?
下面我们要往镜像中添加代码,操作也很简单,多写几行指令就行了:
大概的原理就是这样,大家可以自己去网上找更详细的代码示例。这样做的好处是,我们最终得到的镜像里只包含一个非常轻量的操作系统、必要的依赖项以及应用的代码,没有任何多余的东西。
不只是,其他开发语言的镜像也可以依此类推。
更多基础镜像
除了上面说的微镜像以外,还有更给力的。现在在上有很多轻量的基础镜像,基本上所有主流开发语言的基础镜像都有,大家可以戳下面这个链接,自己去上下载合适的镜像。
这些镜像都是经过优化的,文件体积很小,而且还会定期更新,大家可以直接用这些镜像,效率要比我们自己创建镜像好一些。还是以上面的应用为例,如果用上面的基础镜像,指令还可以更简单一些:
另外说一下,上面的基础镜像都有两个版本,一个用于应用编译,一个用于运行应用,用来做编译的镜像包含了很多编译工具,体积要大很多,这个大家要注意一下。
比方说,如果要编译依赖项,就要用做基础镜像:
然后在命令里加载镜像,或者直接运行这个镜像:
上面的方式也适用于其他语言,不过写命令的时候要用各自的命令。
如果要对某种语言的某个特定版本创建镜像的话,我们只要改一下上面命令里的就行了,比如说要创建或者的镜像,就直接把镜像名改成或者就行。上针对每一种语言的每个版本都有相应的镜像,比如说的各种镜像就可以在这个链接下载到:其他语言的镜像可以去仓库下载。
各种语言的镜像构建方法
这个问题要复杂一些,大家可以戳下面这个链接,里面包含了大多数主流开发语言的微镜像构建方法。
进去以后大家可以查看各种开发语言对应的文档,这里面的教程是很全面的,大家可以参照教程来编译依赖项、测试应用代码、构建微型镜像并测试镜像。
在提倡微服务架构的今天,对应用部署的要求越来越高,容器的大小直接影响到服务的部署和运行。而容器从本质上说只是镜像的一个实例,所以归根结底,应用的性能和体验在很大程度上还是取决于镜像的大小。希望大家读完本文之后,都能独立地创建出不含任何多余文件的微镜像,这个问题很重要,因为我们一旦开始在容器里运行镜像,就不可避免地会碰到文件体积问题,这个时候只有微容器才是最好的解决方案,希望大家从一开始就考虑到这个问题,并在今后的实战中坚持贯彻微容器的思想。
是一个很不错的操作系统,在此基础上我们再将各种依赖项打包到系统中,就可以构建一个完备的轻量级镜像了。就以上面的应用为例,因为我们只需要用到,所以只要添加包就可以了。我们可以用下面的来构建镜像:
这样创建出来的镜像只包含以及一些必要的依赖项。怎么样,够简洁吧?
下面我们要往镜像中添加代码,操作也很简单,多写几行指令就行了:
大概的原理就是这样,大家可以自己去网上找更详细的代码示例。这样做的好处是,我们最终得到的镜像里只包含一个非常轻量的操作系统、必要的依赖项以及应用的代码,没有任何多余的东西。
不只是,其他开发语言的镜像也可以依此类推。
阅读(944) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。东芝将批量生产体积最小的大容量SD卡_网易新闻
东芝将批量生产体积最小的大容量SD卡
用微信扫码二维码
分享至好友和朋友圈
  新华网东京7月22日电(记者乐绍延)日本东芝公司近日作出决定,从9月开始批量生产目前世界上体积最小的大容量微型SD卡。这种卡主要用于记录数码动态图像和音乐等。
  这种微型SD卡长15毫米,宽11毫米,厚1毫米,容量为1G,体积只有目前在手机上广泛使用的小型SD卡的四分之一。卡内配有快闪存储器。使用这种微型SD存储卡不仅可以使手机和数码音乐播放器等电子产品的功能增加,还可以进一步促使电子产品小型化。采用这种卡录制的动画或者音乐节目可以在有相应接口的电脑以及电视机上欣赏。
  据《日本经济新闻》报道,记录媒体微型化是今后的发展趋势,今年日本市场的小型SD卡将占到市场的4成左右,微型SD卡的推出将加快这一趋势的发展。(完)(来源:新华网)
本文来源:新华网
责任编辑:王晓易_NE0011
用微信扫码二维码
分享至好友和朋友圈
加载更多新闻
热门产品:   
:        
:         
热门影院:
阅读下一篇
用微信扫描二维码
分享至好友和朋友圈怎么设置手机默认存储空间为外接SD卡!!!!!急急急急急_百度知道
怎么设置手机默认存储空间为外接SD卡!!!!!急急急急急
我的手机是天语W806,前几天刷机刷成小米系统了 安卓2.3.4
我买了一张8G的SD卡,现在在手机里有3个存储空间显示:
总空间7.98GB
2、USB存储器
总空间1.9GB
3、手机内存
可用空间0.98GB
我现在手机所有的存储内容都是默认存在USB存...
我有更好的答案
我的问题和你的问题一样,我也没法直接储存到我的SD卡里,我用的是豌豆荚,只有先把东西移到USB储存器再移到SD卡,很上火但总比买了SD卡却浪费掉的好。。。 USB储存器的文件夹里external_sd就是你的8G卡,你可以把主目录改为这个文件夹省了一个步骤也不用那么生气。。。我买了我的16G卡后安装下去照相的相片都会自动安在新买的卡上。。。没办法将就着用,强烈要求安卓解决这个问题啊!
采纳率:36%
打开豌豆荚,在右上角的设置里点手机管理, 再点安装应用设置,然后点强制安装到SD卡。
试试吧兄弟。
我的也是miui,但是没有出现这个问题啊,2.3.4是可以直接移动的,然后刷新到4.0.4是无法移动到SD卡的,需要通过软件,才能移动,或者通过LBE大师,可以直接移动到SD卡中。
问题是我下的软件什么的都把内置储存空间显示成我的SD卡。。。 郁闷了
这个应该是miui系统的问题,有时刷成miui,不会很好的兼容,试试LBE吧,我的刷成4.0.4刚开始也是一样很郁闷的更改文件位置相信能空出不少空间的,当然,如果你之前装360了,一定要先卸载
用RE浏览器打开system/bulid.prop文件,任意位置粘贴入如下代码:#Tweaks&added&by&yeyoupersist.sys.emmc=/mnt/sdcard2persist.sys.ui.hw=truepersist.adb.notify=0debug.sf.hw=1dalvik.vm.startheapsize=6mdalvik.vm.execution-mode=int:jitdalvik.vm.dexopt-flags=v=n,o=vdalvik.vm.verify-bytecode=falsedalvik.vm.enableassertion=allwindowsmgr.max_events_per_sec=240然后保存退出。重启手机,你就可以发现默认存储已经是外置存储卡了。
其他1条回答
为您推荐:
其他类似问题
性病的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。105被浏览19,274分享邀请回答#include &stdio.h&
#include &stdlib.h&
int main()
p = (int*)malloc(sizeof(int)*1000);
17655 条评论分享收藏感谢收起12746 条评论分享收藏感谢收起树莓派 Raspberry Pi SD卡系统备份与还原 | 奋斗博客

我要回帖

更多关于 镜像存储 的文章

 

随机推荐