Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1429537
  • 博文数量: 931
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 10198
  • 用 户 组: 普通用户
  • 注册时间: 2011-07-08 12:28
个人简介

测试

文章分类

全部博文(931)

文章存档

2020年(134)

2019年(792)

2018年(5)

我的朋友

分类: 架构设计与优化

2019-05-03 23:24:55

我们在使用Dockerfile构建docker镜像时,一种方式是使用官方预先配置好的容器镜像。优点是我们不用从头开始构建,节省了很多工作量,但付出的代价是需要下载很大的镜像包。

比如我机器上docker images返回的这些基于nginx的镜像,每个都超过了100MB,而一个简单的Ubuntu的容器超过了200MB,如果安装了相关的软件,尺寸会更大。

如果我们的需求是在构建一个符合我们实际业务需求的Docker镜像的前提下,确保镜像尺寸尽可能的小,应该怎么做呢?

思路是使用空镜像scratch。

新建一个文件夹,用wget下载rootfs.tar.xz压缩包。

wget -O rootfs.tar.xz  

这个将近30MB的压缩包是个什么东东?

解压之后看内容就知道了,包含了操作系统大部分常用命令。


wget -O nginx.conf  

新建一个dockerfile文件,将下列内容粘贴进去:

FROM scratch  # set the environment to honour SAP's proxy servers ENV http_proxy 
ENV https_proxy 
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  && \
wget --no-check-certificate -O /usr/share/nginx/html/index.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 . 

产生的日志:


最后看到镜像成功构建的消息。


基于这个名为nginx-from-scratch的镜像启动一个新的nginx容器:


localhost:1083, 看到首页,说明这个新构建的镜像工作正常。



要获取更多Jerry的原创文章,请关注公众号"汪子熙":

阅读(614) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~