dockerfile构建Nginx镜像

dockerfile构建Nginx镜像

一、前期工作准备(前提是安装好docker)

1.1、创建目录,用于存放dockerfile

[root@node2 ~]# mkdir /app
[root@node2 ~]# cd /app/
#用于以后存放web服务器的目录
[root@node2 app]# mkdir web/nginx -p && cd web/nginx 

1.2、构建Dockerfile文件

#构建之前我们先pull个镜像下来,等会基于这个镜像做nginx镜像
[root@node2 ~]# docker pull centos:7.6.1810
#构建的时候,不知道怎么写,或者命令不记得可以参考hub.docker.com上别人写好的
---
ADD命令和COPY命令都可以往容器加东西,但是ADD会自动解压.tar.gz安装包,COPY原封不动拷贝过去
Dockerfile 是分步执行的当你build前面5步,后面再添加新的命令,前面的会有记录,不会重新执行!
---

1.3、build:

[root@node2 nginx]# vim Dockerfile

# Base images 基础镜像
FROM centos:7.6.1810

#作者名称
LABEL maintainer="tzh <362777279@qq.com>"

#执行下面命令,安装基础环境
RUN yum install -y pcre-devel wget net-tools gcc zlib zlib-devel make openssl-devel vim

#添加nginx到容器里
ADD nginx-1.10.1.tar.gz /usr/local/src/

#编译安装
RUN cd /usr/local/src/nginx-1.10.1 && ./configure --prefix=/app/nginx --user=nginx --group=nginx --with-http_s
tub_status_module && make && make install

#全局变量设置
ENV aaa 123456

#做软链接
RUN ln -s /app/nginx/sbin/* /usr/local/sbin/

RUN useradd nginx

#暴露端口
EXPOSE 80 443 22

#运行这个镜像,默认执行的命令,有多个CMD时,只有最后一个有效,前面的会被覆盖
CMD ["nginx", "-g", "daemon off;"]

------当前目录,以及文件------
[root@node2 nginx]# pwd
/app/web/nginx
[root@node2 nginx]# ls
Dockerfile  nginx-1.10.1.tar.gz

[root@node2 nginx]# docker build -t nginx:v2 .
*
*
*
Successfully built b044c844052b
Successfully tagged nginx:v2
[root@node2 nginx]# vim Dockerfile            
FROM centos:7.6.1810
#显示这个就成功了

#可以进去看看
[root@node2 nginx]# docker run --rm -it nginx:v3 bash

#启动容器看看是否成功命令:CMD ["nginx", "-g", "daemon off;"]
#能进去说明可以了
[root@node2 nginx]# docker run  -it nginx:v4 bash
原文地址:https://www.cnblogs.com/hsyw/p/13636629.html