zoukankan      html  css  js  c++  java
  • 16.Docker之使用dockerfile创建nginx镜像

    一、前言


     看了很多人的dockerfile,都是长篇大论,解释的又很少,对于初学者来说根本不知道指令的意思,哪怕知道指令的意思,也不知道指令后面配置的一大串东西来自于哪里,而这一大串又无需去记忆,例如:

    开头的RUN指令都能根据dockerfile的指令说明可以知道该指令是干嘛用的,但是后面这一串这么长的东西又是来自于哪里?

    所以在编写dockerfile之前,你必须懂的nginx(该文章是基于dockerfile创建nginx镜像)在linux上的安装流程,否则,需要安装什么依赖等都不知道,就无从下手。

    二、准备


    在百度上,可以搜索到很多在linux上安装nginx的教程,这里给出一个安装教程地址:http://www.runoob.com/linux/nginx-install-setup.html。

    在尝试着在自己的linux(非docker)机器上尝试的安装一遍nginx后,可以总结出大概这么几个流程(后面的dockerfile可以根据此流程来编写):

    1.基于linux系统的docker容器是精简版的linux系统,里面很多命令等都没安装,比如vim等,所以我们安装软件时,都需要提前安装依赖包、工具等,比如nginx安装时依赖编译工具和相关库文件:

    yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel

    2.必要的安装依赖pcre

    安装流程:解压,进入解压目录,运行make编译命令,最后运行make install命令

    3.最后就是安装nginx

    安装流程:解压,进入解压目录,最后是编译安装

    三、编写dockerfile


    该dockerfile是根据上方的流程一步步编写下来,完全可以对照在linux上的安装流程:

    #base image
    FROM centos
    
    #MAINTAINER,this dockerfile creater
    MAINTAINER loose@docker.com
    
    #拷贝宿主机nginx-1.12.2.tar.gz到/usr/local/nginx目录
    ADD nginx-1.12.2.tar.gz /usr/local/nginx
    
    #拷贝宿主机pcre-8.35.tar.gz到/usr/local/pcre目录
    ADD pcre-8.35.tar.gz /usr/local/pcre
    
    #安装编译工具及库文件
    RUN yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel
    
    #进入pcre解压目录
    WORKDIR /usr/local/pcre/pcre-8.35
    
    #开始安装并编译pcre
    RUN ./configure
    RUN make && make install
    
    #安装nginx,首先进入nginx目录
    WORKDIR /usr/local/nginx/nginx-1.12.2
    
    #开始安装并编译nginx,注意pcre这里指定的是绝对路径
    RUN ./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/pcre/pcre-8.35 && make && make install
    
    #添加nginx组和账户
    RUN /usr/sbin/groupadd nginxGroup
    RUN /usr/sbin/useradd -g nginxGroup nginxAdmin
    
    #指定端口
    EXPOSE 80

    当然,这只是个入门,设计到的指令比较少,比如CMD、ENV、VOLUME就没有,后面的文章会一个个通过案例展示出来。

    四、通过dockerfile构建镜像


     执行命令:

    docker build -t nginx:v1.0 .

    说明:nginx为dockerfile构建的镜像名称,v:1.0为构建镜像TAG,最后面的 . 代表的是相对路径的当前目录,如果需要全路径则为/home/env/(Dockerfile文件目录)

    build完毕后,我们来查看镜像列表:

    最后,根据该镜像,启动容器,并在网页上访问nginx:

  • 相关阅读:
    排序算法与数据结构复习总结
    Kafka知识总结及面试题
    深入理解Redis系列之事务
    深入理解Redis系列之持久化
    基于数据库、redis和zookeeper实现的分布式锁
    深入理解MySQL系列之优化
    Mysql-主从复制(Docker)
    Mysql-GTID主从复制
    Ansible基础
    Nginx + php-fpm源码编译
  • 原文地址:https://www.cnblogs.com/Json1208/p/8971915.html
Copyright © 2011-2022 走看看