使用Dockerfile制作nginx镜像

原有的nginx镜像是直接docker pull拉取的,好像是1.19.0的版本。甲方公司在安全扫描的时候说有安全漏洞,需要升级nginx的镜像的版本,因此选择从0开始制作最新版的nginx镜像(1.21.0版本)。

制作镜像的方法有两种,这里我们选择Dockerfile方式:
Dockerfile是使用源代码构建docker的镜像,编辑一个Dockerfile,而后根据此文件制作;docker可以自动通过读取Dockerfile中的指令,自动构建镜像。Dockerfile是一个文本文档包含所有用户的命令,可以在命令行上调用组建一个镜像。使用docker build命令的用户可以读取docker file中的连续指令,自动构建一个镜像。

1、创建工作目录

mkdir nginx

2、进入nginx目录,创建nginx测试页

cd nginx/
vim index.html

docker nginx build successful

3、创建dockerfile文件

#基准镜像
FROM centos:7
#作者信息
MAINTAINER "zhbr_zyn"
#工作目录
WORKDIR /usr/local/src/ 
#定义环境变量
ENV NG_VERSION nginx-1.21.0 
#安装epel仓库
RUN yum -y install epel-release 
#安装wget
RUN yum -y install wget 
#下载nginx文件并解压
RUN wget http://nginx.org/download/$NG_VERSION.tar.gz && tar xzvf $NG_VERSION.tar.gz 
#安装编译依赖包
RUN yum install -y gcc gcc-c++ glibc make autoconf openssl openssl-devel && yum install -y pcre-devel libxslt-devel gd-devel GeoIP GeoIP-devel GeoIP-data
#清理仓库
RUN yum clean all 
#创建nginx用户
RUN useradd -M -s /sbin/nologin nginx 
#切换工作目录
WORKDIR /usr/local/src/$NG_VERSION 
#编译安装nginx
RUN ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-file-aio --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_image_filter_module --with-http_geoip_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_stub_status_module && make && make install
#复制测试页面到容器中
ADD index.html /usr/local/nginx/html 
#设置容器中要挂在到宿主机的目录
VOLUME /usr/local/nginx/html 
#设置sbin环境变量
ENV PATH /usr/local/nginx/sbin:$PATH 
#暴露80端口
EXPOSE 80/tcp 
ENTRYPOINT ["nginx"]
CMD ["-g","daemon off;"]
#当ENTRYPOINT和CMD连用时,CMD的命令是ENTRYPOINT命令的参数,两者连用相当于nginx -g "daemon off;"而当一起连用的时候命令格式最好一致(这里选择的都是json格式的是成功的,如果都是sh模式可以试一下)

4、构建镜像

docker build ./ -t centos7_nginx

//注意:镜像名字必须是小写
[root@cdh02 nginx]# docker build ./ -t centOS7_nginx
invalid argument "centOS7_nginx" for "-t, --tag" flag: invalid reference format: repository name must be lowercase

使用Dockerfile制作nginx镜像_第1张图片

5、查看镜像

docker images

使用Dockerfile制作nginx镜像_第2张图片
6、运行容器

docker run --name mynginx -d -p 8123:80 8e6c01315dab

7、查看容器

docker ps -a

在这里插入图片描述
8、访问nginx

http://192.168.1.184:8123

你可能感兴趣的:(Docker,Nginx,docker,nginx)