通过Dockerfile文件构建镜像
程序员文章站
2024-01-28 17:03:04
...
本文通过构建Nginx镜像,示例如何通过Dockerfile文件构建镜像。
目录
一、创建一个目录
创建目录的目的,用于区分不同镜像的构建。相当于工作空间。
[aaa@qq.com install]# mkdir nginx_build
[aaa@qq.com install]# cd nginx_build/
[aaa@qq.com 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 aaa@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目录下构建镜像。
[aaa@qq.com 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欢迎页。