zoukankan      html  css  js  c++  java
  • Dockerfile

    Dockerfile格式

    FROM centos:latest           #依赖的基础镜像

    MAINTAINER fage             #制作文件的人

    RUN yum install -y gcc       #安装的软件

    COPY run.sh /usr/bin         #执行指令

    EXPOSE 80                       #声明使用的端口

    CMD [ “run.sh”]                  #构建的时候执行的指令

    命令是顺序往下执行的

    Dockerfile指令

    指令

    描述

    FROM

    构建新镜像是基于那个镜像

    MAINTAINER

    镜像维护中信息

    RUN

    构建镜像时运行的shell命令

    COPY

    拷贝文件或目录到镜像中

    ENV

    设置环境变量

    USER

    为RUN、CMD、ENTRYPOINT执行命令指定运行用户

    EXPOSE

    声明容器运行的端口

    HEALTHCHECK

    容器中服务器健康检查

    WORKDIR

    为RUN、CMD、ENTRYPOINT、COPY、ADD设置工作目录

    ENTRYPOINT

    运行容器时执行,如果有多个ENTRYPOINT指令,最后一个生效

    CMD

    运行容器时执行,如果有多个CMD指令,最后一个生效

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    Build镜像

    Usage:docker build [OPTIONS] [PATH] | URL | -[flags]

    Options:

    -t --tag list    #镜像名称

    -f --file string  #指定Dockerfile文件位置

    常用组合

    docker build .

    docker build -t shykes/myapp .

    docker build -t shykes/myapp -f /path/Dockerfile /path             *****

    docker build -t shykes/myapp http://www.example.com/Dockerfile

    构建业务基础镜像

    1、 构建nginx基础镜像

    2、 构建PHP基础镜像

    3、 构建Tomcat基础镜像

    构建nginx镜像步骤

    FROM centos:7
    MAINTAINER fage
    RUN yum install -y gcc gcc-c++ make 
        openssl-devel pcre-devel gd-devel 
        iproute net-tools telnet wget curl && 
        yum clean all && 
        rm -rf /var/cache/yum/*
    RUN wget http://nginx.org/download/nginx-1.15.5.tar.gz && 
        tar zxf nginx-1.15.5.tar.gz && 
        cd nginx-1.15.5 &&
        ./configure --prefix=/usr/local/nginx 
        --with-http_ssl_module 
        --with-http_stub_status_module && 
        make -j 4 && make install && 
        rm -rf /usr/local/nginx/html/* && 
        echo "ok" >> /usr/local/nginx/html/status.html && 
        cd / && rm -rf nginx-1.12.2* && 
        ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    
    ENV PATH $PATH:/usr/local/nginx/sbin
    #COPY nginx.conf /usr/local/nginx/conf/nginx.conf
    WORKDIR /usr/local/nginx
    EXPOSE 80
    CMD ["nginx", "-g", "daemon off;"]
    

    尽量把无用的内容删除和清空,保证镜像的最小

    开始构建

    docker build -t nginx:v1 -f Dockerfile-nginx .

     

     

    启动构建的容器,并测试访问

    docker run -d --name nginx01 -p 88:80 nginx:v1

     

     

     构建PHP镜像

    FROM centos:7
    MAINTAINER fage
    RUN yum install epel-release -y && 
        yum install -y gcc gcc-c++ make gd-devel libxml2-devel 
        libcurl-devel libjpeg-devel libpng-devel openssl-devel 
        libmcrypt-devel libxslt-devel libtidy-devel autoconf 
        iproute net-tools telnet wget curl && 
        yum clean all && 
        rm -rf /var/cache/yum/*
    
    RUN wget http://docs.php.net/distributions/php-5.6.36.tar.gz && 
        tar zxf php-5.6.36.tar.gz && 
        cd php-5.6.36 && 
        ./configure --prefix=/usr/local/php 
        --with-config-file-path=/usr/local/php/etc 
        --enable-fpm --enable-opcache 
        --with-mysql --with-mysqli --with-pdo-mysql 
        --with-openssl --with-zlib --with-curl --with-gd 
        --with-jpeg-dir --with-png-dir --with-freetype-dir 
        --enable-mbstring --with-mcrypt --enable-hash && 
        make -j 4 && make install && 
        cp php.ini-production /usr/local/php/etc/php.ini && 
        cp sapi/fpm/php-fpm.conf /usr/local/php/etc/php-fpm.conf && 
        sed -i "90a daemonize = no" /usr/local/php/etc/php-fpm.conf && 
        mkdir /usr/local/php/log && 
        cd / && rm -rf php* && 
        ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    
    ENV PATH $PATH:/usr/local/php/sbin:/usr/local/bin:/usr/local/php/bin
    COPY php.ini /usr/local/php/etc/
    COPY php-fpm.conf /usr/local/php/etc/
    WORKDIR /usr/local/php
    EXPOSE 9000
    CMD ["php-fpm"]
    

    开始构建

    docker build -t php:v1 -f Dockerfile-php .

    验证

    docker run -d --restart=always --name php01 php:v1

    docker ps -l

    docker exec -it php01 bash

    cd /usr/local/php/bin && ./php -v

    构建Tomcat镜像

    FROM centos:7
    MAINTAINER fage
    
    ENV VERSION=8.0.50
    
    RUN yum install java-1.8.0-openjdk wget curl unzip iproute net-tools -y && 
        yum clean all && 
        rm -rf /var/cache/yum/*
    
    #RUN wget http://mirrors.shu.edu.cn/apache/tomcat/tomcat-8/v${VERSION}/bin/apache-tomcat-${VERSION}.tar.gz && 
    COPY apache-tomcat-8.0.50.tar.gz /tmp
    RUN cd /tmp && 
        tar zxf apache-tomcat-${VERSION}.tar.gz && 
        mv apache-tomcat-${VERSION} /usr/local/tomcat && 
        rm -rf apache-tomcat-${VERSION}.tar.gz /usr/local/tomcat/webapps/* && 
        mkdir /usr/local/tomcat/webapps/test && 
        echo "ok" > /usr/local/tomcat/webapps/test/status.html && 
        sed -i '1a JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom"' /usr/local/tomcat/bin/catalina.sh && 
        ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    
    ENV PATH $PATH:/usr/local/tomcat/bin
    WORKDIR /usr/local/tomcat
    EXPOSE 8080
    CMD ["catalina.sh", "run"]   #前台运行  

    开始构建

    docker build -t tomcat:v1 -f Dockerfile-tomcat .

    构建项目镜像包

    cat >Dockerfile <<EOF

    FROM tomcat:v1

    COPY jenkins.war /usr/local/tomcat/webapps/ROOT.war

    EOF

     

    docker build -t tomcat:v2 -f Dockerfile .

    docker run -d --name tomcat02 -p 8090:8080 tomcat:v2

    docker exec -it tomcat02  bash

    ls webapps/

     

    使劲折腾才会有更好的结果!!!! 如有不对请不吝赐教,感谢! 转载请注明出处!
  • 相关阅读:
    汉语-谚语:条条大路通罗马
    汉语-词语:缱绻
    几何-对称图形:中心对称图形
    java解析获取Excel中的数据--同时兼容2003及2007
    如何使gcc输出搜索到的头文件路径?
    如何使tmux可以像vi一样操作(如快速跳转到某一行)?
    如何使tmux能够使用鼠标上下滚动?
    ID3v2: 为aac格式的音频文件添加ID3v2 Header
    FFmpeg: 利用FFmpeg提取音频文件中的metadata
    C语言:变长结构体
  • 原文地址:https://www.cnblogs.com/huanglingfa/p/13764427.html
Copyright © 2011-2022 走看看