dockerfile制作基于centos7的nginx镜像

Dockerfile 是一个文本文件,其内包含了一条条的 指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建,同时尽可能的避免重复使用指令,有了 Dockerfile,当我们需要定制自己额外的需求时,只需在 Dockerfile 上添加或者修改指令,重新生成 image 即可,省去了敲命令的麻烦。

Dockerfile最佳实践

  1. 容器是短暂的,也就是说,你需要可以容易的创建、销毁、配置你的容器。
  2. 多数情况,构建镜像的时候是将 Dockerfile 和所需文件放在同一文件夹下。但为了构建性能,我们可以采用 .dockerignore 文件来排除文件和目录。
  3. 避免安装不必要的包,构建镜像应该尽可能减少复杂性、依赖关系、构建时间及镜像大小。
  4. 最小化层数,使镜像尽可能的小。
  5. 排序多行参数,通过字母将参数排序来缓解以后的变化,这将帮你避免重复的包、使列表更容易更新。 
  6. 构建缓存,大家知道 Docker 构建镜像的过程是顺序执行 Dockerfile 每个指令的过程。执行过程中,Docker 将在缓存中查找可重用的镜像,如果不想使用缓存,你也可以使用 docker build --no-cache=true ... 命令。

基于centos7.2构建

vim  /data/dockerfile
#基于centos7.2镜像构建
FROM centos:centos7.2.1511
#作者和邮箱
MAINTAINER lemon "[email protected]"
#工作目录,相当于cd到一个目录
WORKDIR /usr/src
#可以去执行一些命令
RUN yum install wget -y && \
    wget http://mirrors.aliyun.com/repo/Centos-7.repo -O /etc/yum.repos.d/centos.repo && \
    yum install --nogpgcheck gcc make pcre-devel zlib-devel wget -y  &&  \
    wget http://nginx.org/download/nginx-1.16.0.tar.gz && \
    tar xf nginx-1.16.0.tar.gz && \
    rm -rf nginx-1.16.0.tar.gz && \
    cd nginx-1.16.0 && \
    ./configure --prefix=/usr/local/nginx --with-pcre && echo "999999" && \
    make && make install && \
    echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf && \
    yum clean all
#打开80端口
EXPOSE 80
#启动容器
CMD ["/usr/local/nginx/sbin/nginx"]

构建

docker  build  -t ailemon/nginx:test .
# -t  指定个标签名名
# 在dockerfile同一目录下构建

启动容器

docker run --name ning -it -d -p 8090:80 ailemon/nginx:test
# --name  指定容器名称
# -it  打开个可交互的终端
# -d  后台运行
# -p  宿主机ip:容器ip 

注意事项

构建过程中可能出现各种问题

ADD命令不能直接解压缩远程的url文件tar包

dockerfile中注意命令前不要有空格

本人邮箱:[email protected],有问题可以联系,咱们共同解决

发布了40 篇原创文章 · 获赞 59 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_44208042/article/details/90298843
今日推荐