怎么把系统压缩成镜像

怎么把系统压缩成镜像,第1张

Docker镜像压缩与优化 *** 作

本文详细介绍了Docker图像压缩优化的实际 *** 作,具有很好的实用价值,希望对大家有所帮助。跟我回去看看。

目前docker这么受欢迎,关键是它的车轻量化,可以快速部署,资源可以利用。然而,docker图像质量的关键在于docker文件的编写质量。相同的镜像,但是不同的docker文件使用不同的镜像大小构建。这是因为Docker是由一层层的写保护层堆积而成的,每一层都是Dockerfile中的每一条指令。因此,Dockerfile的大小建立在由Dockerfile中的指令形成的内层的大小中。

我们举个小例子来详细描述一下dockerimage的出现。

每个人都有一个Dockerfile:S2/]

FROMUbuntu:14.04 ADDrun.sh/ VOLUME/data CMD[“./run.sh”]

这个简单的Dockerfile最关键的是:根据Ubuntu:14.04系统软件,把run.sh放在根目录下,设置好卷挂载点,然后在镜像启动的时候运行脚本使run.sh。

下图显示了生成的docker图像:

显然,从图中可以看出,四条指令各产生四层。假设Ubuntu:14.04是150MB,run.sh是1MB,那么FROMUbuntu:14.04层的大小是150MB,ADDrun.sh/layer的大小是1MB,而VOLUME/data层和cmd["。/run.sh"]不可用。

因此,所有图像的大小为151MB。了解了docker图像形成的基本原理后,我们再来说说docker图像的优化和压缩。

必须明确的一点是:叠了多少层?在某些情况下,不容易决定图像的大小,只有当它出现在Dockerfile:

运行yuminstall***

运行yum卸载***

在这种情况下,图像可以被压缩和优化,因为上面的话是安装一个特殊的工具,然后下载。正常情况下,大家都以为一安装卸载,大小就为零了,但dockerimage并不是这样。RUNyum卸载***层只是让上层不可见,但上层的大小不容易改变。所以要想达到零的实际效果,就必须把这个双层做好。

运行yuminstall***&&\

yumuninstall***

这将达到压缩图像的实际效果。

因此,压缩图像有两个关键点:

1.选择更小的原图,也就是后面从哪个图开始要越小越好。

2.根据具体情况在Dockerfile中组装各层。详细情况就是经常说的提到的情况。要知道任意组装图层是不会达到效果的。

填写专长:如何将AnacondaJupyter构建成docker映像

因为近期业务流程的要求,需要搭建一个jupyter的形象来展示服务项目,docker的轻量化车可以很方便的转移。

下面是我做的和踩的坑:

首先,安装anaconda。有python2和3版本号。版本号不同,但整个构建过程是一样的。有两种方法。第一,可以按照Dockerfile的方法构建镜像,但是运行Anaconda2-5.0.1-Linux-x86_64.sh脚本时无法完成交互。所以我用了dockercommit方法来实现,但其实可以按照Dockerfile方法来构建。你只需要先在本机运行anaconda2-5.0.1-Linux-x86_64.sh的脚本制作,把文件夹名添加到镜像的相对部分,修改系统变量添加路径即可。

以python2为例:

1.从anaconda官网上免费下载 *** 作脚本制作Anaconda2-5.0.1-Linux-x86_64.sh,其中在免费下载的情况下要注意你的系统软件是32位系统还是64位系统。

2.将scp脚本制作成基本映像,安装应力消除指令bzip2。

yum安装bzip2

3. *** 作脚本制作(一直键入yes)

shanaconda2-5.0.1-Linux-x86_64.sh

4.更新anaconda

康达更新蟒蛇

5.安装jupyter

康达安装jupyter

6.建立帐户密码

root@localhost~]#ipython Python3.5.2(default,Aug42017,02:13:48) Type'copyright','credits'or'license'formoreinformation IPython6.1.0--AnenhancedInteractivePython.Type'?'forhelp. In[1]:fromnotebook.authimportpasswd In[2]:passwd() Enterpassword: Verifypassword: Out[2]:'sha1:5311cd9a9da9:70dd3321fccb5b5d77e66080a5d3d943ab9756b4'

7.形成环境变量

jupyter笔记本-生成-配置-允许-根

注意:在这里的一个步骤的情况下,您可能会遇到不正确的数字:UnicodeEncodeError错误:“ASCII”代码无法对位置中的字符进行编码...

解决方法是:anaconda2文件夹名中的lib>:python2.7>;Site.py更改:

if0: #Enabletosupportlocaleawaredefaultstringencodings. importlocale loc=locale.getdefaultlocale() ifloc[1]: encoding=loc[1] #将所述代码段中if后边的0改为1,储存,重启anaconda。

8.改变环境变量:

vi~/。jupyter/jupyter_notebook_config.py

增加以下几点:

c.NotebookApp.ip='*' c.NotebookApp.password=u'sha1:5311cd9a9da9:70dd3321fccb5b5d77e66080a5d3d943ab9756b4'#留意这儿的密匙是不久形成的哪个 c.NotebookApp.open_browser=False c.NotebookApp.port=8888#随意特定一个端口号,应用默认设置8888还可以

9.保存图像

码头提交船只ID镜像名称

10.启动图像以显示服务项目:

dockerrun-privileged-d-p8889:8888-v/sys/fs/cgroup:/sys/fs/cgroup-namejupyterjupyter2:v2/usr/sbin/init

注:centos7有一个深坑,就是当你关闭防火墙时,systemctl无法应用。错误:未能获得d-bus连接:不允许 *** 作。

因此,要从init开始,可以在Dockerfile中使用CMD来启动运行时。

11.输入docker图像

dockerexec-itjupyter/bin/bash

12.关闭防火墙。

systemctl停止防火墙服务

13.开始jupyter

jupyter笔记本-notebook-dir=/root/-allow-root

14.在电脑浏览器中键入网络服务器的IP所投射的服务器端口,即可浏览前往~

以上Docker图像压缩优化的实际 *** 作,都是我分享给你的。期待给你一个参考,也期待你的申请。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/774051.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-03
下一篇 2022-05-03

发表评论

登录后才能评论

评论列表(0条)

保存