本文通过构建Nginx镜像,示例如何通过Dockerfile文件构建镜像。

目录

一、创建一个目录

二、编写Dockerfile文件

三、构建镜像

四、使用构建成功的镜像创建容器

五、测试


一、创建一个目录

创建目录的目的,用于区分不同镜像的构建。相当于工作空间。

[root@localhost install]# mkdir nginx_build
[root@localhost install]# cd nginx_build/
[root@localhost nginx_build]# pwd
/install/nginx_build

二、编写Dockerfile文件

在/install/nginx_build目录下创建Dockerfile文件,内容如下:

# pull down centos image。指定centos7,centos8版本安装nginx报错error: 'struct crypt_data' has no member named 'current_salt'
FROM centos:7
MAINTAINER Jack 1181120299@qq.com

# install nginx
RUN useradd  www -u 1200 -M -s /sbin/nologin
RUN mkdir -p /install
RUN yum install -y make automake autoconf libtool cmake pcre pcre-devel openssl openssl-devel gd-devel \
    zlib-devel gcc gcc-c++ net-tools iproute telnet wget curl &&\
    yum clean all && \
    rm -rf /var/cache/yum/*

WORKDIR /install
RUN wget http://nginx.org/download/nginx-1.9.9.tar.gz
RUN tar -xzvf ./nginx-1.9.9.tar.gz
WORKDIR nginx-1.9.9
RUN ./configure --prefix=/opt/nginx --with-http_image_filter_module --user=www --group=www \
    --with-http_ssl_module --with-http_v2_module --with-http_stub_status_module

# 解决nginx switch语句没有加break的warning。make时不要将warn认为是error。否则make失败
RUN sed -i 's/-Werror//g' ./objs/Makefile

RUN make && make install
RUN chown -R www.www /opt/nginx
ENV LOG_DIR /opt/nginx
ENV PATH $PATH:/opt/nginx/sbin


ENTRYPOINT /opt/nginx/sbin/nginx && tail -f /opt/nginx/logs/access.log

三、构建镜像

在/install/nginx_build目录下构建镜像。

[root@localhost nginx_build]# docker build -t jack_nginx -f ./Dockerfile ./

-t 指定镜像的名称,如果要指定版本,采用 image:tag 的写法。

-f 指定Dockerfile文件,默认当前文件夹下的Dockerfile。

最后的./指在当前文件夹下编译。

四、使用构建成功的镜像创建容器

docker run -itd --name nginx_container -p 8899:80 jack_nginx /bin/bash

五、测试

访问宿主机的8899端口,返回nginx欢迎页。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐