赞
踩
下面将三种方式都试用一下,看看各自的大小
先看一下不做优化的镜像文件的大小,用正常的步骤封装一个PHP容器镜像
FROM centos:7 ADD php-7.1.10.tar.bz2 /tmp RUN yum -y install gcc gcc-c++ make \ gd-devel libxml2-devel libcurl-devel \ libjpeg-devel libpng-devel openssl-devel bison RUN mkdir -p /usr/local/php/etc WORKDIR /tmp/php-7.1.10 RUN ./configure --prefix=/usr/local/php \ --with-mysql-sock=/usr/local/mysql/mysql.sock \ --with-mysqli --with-zlib --with-curl \ --with-gd --with-jpeg-dir --with-png-dir \ --with-freetype-dir --with-openssl --enable-fpm \ --enable-mbstring --enable-xml --enable-session \ --enable-ftp --enable-pdo \ --enable-tokenizer --enable-zip RUN make RUN make install COPY php.ini /usr/local/php/etc/php.ini COPY php-fpm.conf /usr/local/php/etc/php-fpm.conf RUN cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf RUN sed -i 's/127.0.0.1/0.0.0.0/g' /usr/local/php/etc/php-fpm.d/www.conf WORKDIR /usr/loacl/php/ EXPOSE 9000 CMD ["sbin/php-fpm","-c","etc/php-fpm.conf"]
docker build -t php:1 .
.....
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
php 1 9cfdb75a9e39 27 seconds ago 1.25GB
当前未优化的大小是1.25G的大小
这个步骤就是相对简单,就是将相同的命令指令进行合并,或者去除不必要的指令,因为每一层指令都会生成一层镜像层,每一层镜像层都会基于之前的镜像层来占用内存,所以,可以将相同的指令进行合并,以及压缩包等,使用完之后没有需要就进行删除。减少当前镜像层的容量
FROM centos:7 ADD php-7.1.10.tar.bz2 /tmp RUN yum -y install gcc gcc-c++ make \ gd-devel libxml2-devel libcurl-devel \ libjpeg-devel libpng-devel openssl-devel bison && \ cd /tmp/php-7.1.10 && \ ./configure --prefix=/usr/local/php \ --with-mysql-sock=/usr/local/mysql/mysql.sock \ --with-mysqli --with-zlib --with-curl \ --with-gd --with-jpeg-dir --with-png-dir \ --with-freetype-dir --with-openssl --enable-fpm \ --enable-mbstring --enable-xml --enable-session \ --enable-ftp --enable-pdo \ --enable-tokenizer --enable-zip && \ make && \ make install && \ rm -rf /tmp/php* && \ yum -y remove gcc gcc-c++ make && \ yum clean all EXPOSE 9000 CMD ["/sbin/php-fpm","-c","etc/php-fpm.conf"]
docker build -t php:2 .
.....
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
php 2 09243b76aa7d 49 seconds ago 583MB
这个优化可以在上面的优化的基础上,进一步优化,可以将yum安装,make编译步骤等等方式都进行不显示。也可以进一步的减少镜像的容量的大小。例如 &> /dev/null 以这种方式,将输出结果输入到该文件内
FROM centos:7 ADD php-7.1.10.tar.bz2 /tmp RUN yum -y install gcc gcc-c++ make \ gd-devel libxml2-devel libcurl-devel \ libjpeg-devel libpng-devel openssl-devel bison &> /dev/null && \ cd /tmp/php-7.1.10 && \ ./configure --prefix=/usr/local/php \ --with-mysql-sock=/usr/local/mysql/mysql.sock \ --with-mysqli --with-zlib --with-curl \ --with-gd --with-jpeg-dir --with-png-dir \ --with-freetype-dir --with-openssl --enable-fpm \ --enable-mbstring --enable-xml --enable-session \ --enable-ftp --enable-pdo \ --enable-tokenizer --enable-zip &> /dev/null && \ make &> /dev/null && \ make install &> /dev/null && \ rm -rf /tmp/php* && \ yum -y remove gcc gcc-c++ make &> /dev/null && \ yum clean all &> /dev/null EXPOSE 9000 CMD ["/sbin/php-fpm","-c","etc/php-fpm.conf"]
docker build -t php:3 .
.....
images
REPOSITORY TAG IMAGE ID CREATED SIZE
php 3 3056fd161039 About a minute ago 604MB
使用FROM命令,构建出多个镜像,将指定的镜像做为其他镜像的基础镜像来使用,在后面再调用这个基础镜像,这样容器镜像内存的大小就只有很小的一部分
FROM centos:7 as build ADD php-7.1.10.tar.bz2 /tmp RUN yum -y install gcc gcc-c++ make \ gd-devel libxml2-devel libcurl-devel \ libjpeg-devel libpng-devel openssl-devel bison &> /dev/null && \ cd /tmp/php-7.1.10 && \ ./configure --prefix=/usr/local/php \ --with-mysql-sock=/usr/local/mysql/mysql.sock \ --with-mysqli --with-zlib --with-curl \ --with-gd --with-jpeg-dir --with-png-dir \ --with-freetype-dir --with-openssl --enable-fpm \ --enable-mbstring --enable-xml --enable-session \ --enable-ftp --enable-pdo \ --enable-tokenizer --enable-zip &> /dev/null && \ make &> /dev/null && \ make install &> /dev/null && \ rm -rf /tmp/php* && \ yum -y remove gcc gcc-c++ make &> /dev/null && \ yum clean all &> /dev/null FROM centos:7 EXPOSE 9000 COPY --from=build /usr/local/php /usr/local/php CMD ["/sbin/php-fpm","-c","etc/php-fpm.conf"]
在下面调用构建好的基础镜像
docker build -t php:4 .
.....
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
php 4 068279b7a3e3 14 seconds ago 371MB
这个的镜像包,相较于原来的,就是很小了,前第一种跟第二种优化方式,区别不是很大
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。