欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

通过Dockerfile文件构建镜像

程序员文章站 2024-01-28 17:03:04
...

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

目录

一、创建一个目录

二、编写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。

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

通过Dockerfile文件构建镜像

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

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

五、测试

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

通过Dockerfile文件构建镜像