云计算
虽然官方仓库有几十万张免费图片,但是大部分都不能直接满足公司的业务需求,需要我们自己定制图片。
Docker通过Dockerfile自动构建映像,docker file是一个包含构建映像的说明的文本文件。
在这里,我给你四点建议,帮助你写一个高效易用的Dockerfile。
1.减少镜像层
一条RUN指令形成一个新层,Shell命令尽可能写在一行,减少镜像层。
例如:
来自centos:7
维护者www.ctnrs.com
运行yum install epel-release -y
运行yum install -y gcc gcc-c make -y
运行wget http://docs.php.net/distributions/php-5.6.36.tar.gz
运行tar zxf php-5.6.36.tar.gz
运行cd php-5.6.36
快跑。/configure -前缀=/usr/local/php
运行make -j 4
运行make安装
曝光9000
php-fpm
应该写成:
来自centos:7
维护者www.ctnrs.com
运行yum install epel-release -y \\\\
百胜安装-y gcc gcc-c制造
运行wget http://docs.php.net/distributions/php-5.6.36.tar.gz \ \ \ \
tar zxf php-5.6.36.tar.gz \ \ \ \
cd php-5.6.36 \\\。/configure-prefix=/usr/local/PHP \ \ \
制造-j 4制造安装
曝光9000
php-fpm
结果:第12-6层。
2.优化图像尺寸:清理无用数据。
一次运行形成一个新层。如果没有在同一层删除,那么不管文件最后是否被删除,都会被带到下一层。因此,需要清理各层对应的残差数据,缩小图像尺寸。
来自centos:7
维护者www.ctnrs.com
运行yum install epel-release -y \\\\
yum install-y gcc gcc-c make GD-devel libxml 2-devel \ \ \
libcurl-devel libjpeg-devel libpng-devel OpenSSL-devel \ \ \
libmcrypt-devel libxslt-devel libtidy-devel autoconf \ \ \
iproute net-工具telnet wget curl \\\\
yum全部清除\\\\
rm -rf /var/cache/yum/*
运行wget http://docs.php.net/distributions/php-5.6.36.tar.gz \ \ \ \
tar zxf php-5.6.36.tar.gz \ \ \ \
cd php-5.6.36 \\\。/configure-prefix=/usr/local/PHP \ \ \
make -j 4 make install \\\\
cd/rm -rf php*
至少可以节省几十米甚至上百米。
3.减少网络传输时间
最好有个地方把软件包存放在里面,类似于上面提到的PHP官方下载地址:http://docs.php.net/distributions/php-5.6.36.tar.gz.如果用maven来构建这样的操作,也会改成私有的maven仓库,减少网络传输时间,提高镜像构建速度。
4.多级镜像构造
如果我们运行一个项目,按照我们上面的做法,我们把代码直接复制到基本映像中。如果是需要预代码编译的项目呢?比如JAVA语言,如何把代码编译和部署在一起!
上面的方法需要事先在一个Dockerfile中构建一个基础镜像,包括项目运行时环境和依赖库,然后编写一个Dockerfile将项目复制到运行时环境中,有点复杂。
对于JAVA这样的语言,如果在Dockerfile中运行代码编译,需要内置源代码,但实际运行时只需要内置的包,存在一定的安全风险,增加了镜像体积。
为了解决上述问题,Docker 17.05开始支持多阶段构建,可以简化Dockerfile,减少图像大小。
例如,构建JAVA项目映像:
# git克隆https://github.com/lizhenliang/tomcat-java-demo
# cd tomcat-java-demo
# vi Dockerfile
从maven作为构建
补充。/pom.xml
补充。/src src/
运行mvn干净包
来自李振良/tomcat
运行RM-RF/usr/local/Tomcat/web apps/ROOT
复制自=构建目标/*。war/usr/local/Tomcat/web apps/root . war
# docker build -t演示:v1。
# docker容器运行-d -v演示:v1
首先,第一个FROM后面有一个AS关键字,可以给这个stage起个名字。
然后,FROM的第二部分使用了我们上面构建的Tomcat映像,COPY关键字添加了-from参数,用于将某个阶段的文件复制到当前阶段。这样一个done文件就完成了。
总结:小映像有很多优点,比如快速部署和快速回滚。减少服务中断时间,同时镜像仓库占用磁盘空间更少。
更多关于云服务器,域名注册,虚拟主机的问题,请访问西部数码代理官网:www.chenqinet.cn。