咱们在使用Dockerfile构建docker镜像时,一种方式是使用官方预先配置好的容器镜像。优势是咱们不用从头开始构建,节省了不少工做量,但付出的代价是须要下载很大的镜像包。html
好比我机器上docker images返回的这些基于nginx的镜像,每一个都超过了100MB,而一个简单的Ubuntu的容器超过了200MB,若是安装了相关的软件,尺寸会更大。nginx
若是咱们的需求是在构建一个符合咱们实际业务需求的Docker镜像的前提下,确保镜像尺寸尽量的小,应该怎么作呢?git
思路是使用空镜像scratch。github
新建一个文件夹,用wget下载rootfs.tar.xz压缩包。web
wget -O rootfs.tar.xz https://github.com/debuerreotype/docker-debian-artifacts/raw/b024a792c752a5c6ccc422152ab0fd7197ae8860/jessie/rootfs.tar.xz
这个将近30MB的压缩包是个什么东东?docker
解压以后看内容就知道了,包含了操做系统大部分经常使用命令。 shell
wget -O nginx.conf https://github.wdf.sap.corp/raw/slvi/docker-k8s-training/master/docker/res/nginx.conf
新建一个dockerfile文件,将下列内容粘贴进去:ui
FROM scratch # set the environment to honour SAP's proxy servers ENV http_proxy http://sap.corp:8080 ENV https_proxy http://sap.corp:8080 ENV no_proxy .sap.corp # give yourself some credit LABEL maintainer="Jerry Wang" # add and unpack an archive that contains a Debian root filesystem ADD rootfs.tar.xz / # use the apt-get package manager to install nginx and wget RUN apt-get update && \ apt-get -y install nginx wget # use wget to download a custom website into the image RUN wget --no-check-certificate -O /usr/share/nginx/html/cheers.jpg https://github.wdf.sap.corp/raw/slvi/docker-k8s-training/master/docker/res/cheers.jpg && \ wget --no-check-certificate -O /usr/share/nginx/html/index.html https://github.wdf.sap.corp/raw/slvi/docker-k8s-training/master/docker/res/cheers.html # copy the custom nginx configuration into the image COPY nginx.conf /etc/nginx/nginx.conf # link nginx log files to Docker log collection facility RUN ln -sf /dev/stdout /var/log/nginx/access.log && \ ln -sf /dev/stderr /var/log/nginx/error.log # expose port 80 - the standard port for webservers EXPOSE 80 # and make sure that nginx runs when a container is created CMD ["nginx", "-g", "daemon off;"]
执行命令进行镜像的构建:操作系统
docker build -t nginx-from-scratch1.0 .
产生的日志: 3d
最后看到镜像成功构建的消息。
基于这个名为nginx-from-scratch的镜像启动一个新的nginx容器:
localhost:1083, 看到首页,说明这个新构建的镜像工做正常。 要获取更多Jerry的原创文章,请关注公众号"汪子熙":