zoukankan      html  css  js  c++  java
  • 第二课:Dockerfile

    1.Dockerfile格式

    Dockerfile 中的指令是不区分大小写的。然而,习惯上要将它大写,以便更容易地与参数区分开来。

    Docker按照Dockerfile 中指令的顺序从上到下逐一执行。一般来说,Dockerfile 必须以指定用于构建过程的基础镜像的 FROM 指令开始,而 ARG 指令是唯一可以在 FROM 指令之前使用的指令,FROM 指令之前可以有一条或多条 ARG 指令,用于声明 Dockerfile 中的 FROM 指令中可以使用的参数。

    Docker将以 # 开始的行作为注释,除非该行是有效的解析器指令。一行中任何其他地方的 # 标记都将被视为参数。

    2.Dockerfile指令

    指令 描述
    FROM 构建新镜像是基于哪个镜像
    MAINTAINER 镜像维护者姓名或邮箱地址
    RUN 构建镜像时运行的shell命令
    COPY 拷贝文件或目录到镜像中
    ENV 设置环境变量
    USER 为RUN,CMD和ENTRYPOINT执行命令指定运行用户
    EXPOSE 申明容器运行的服务端口
    HEALTHCHECK 容器中服务健康检查
    WORKDIR 为RUN,CMD,ENTRYPOINT,COPY和ADD设置工作目录
    ENTRYPOINT 运行容器时执行,如果有多个ENTRYPOINT命令,最后一个生效
    CMD 运行容器时执行,如果有多个CMD命令,最后一个生效

    3.Build镜像

    docker build [OPTIONS] PATH | URL | -
    options:
    -t,--tag list #镜像名称
    -f,--file string #指定dockerfile文件位置

    4.构建业务基础镜像

    4.1构建nginx基础镜像

    构建方法
    1.yum或者源码编译安装(1.configure 2.make 3.make install)RUN
    2.启用哪些模块 RUN
    3.nginx初始化 RUN
    4.启动 CMD

    创建Dockerfile
    Dockerfile-nginx

    FROM centos:7
    MAINTAINER yogi1982@163.com
    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.16.1.tar.gz && 
        tar zxf nginx-1.16.1.tar.gz && 
        cd nginx-1.16.1 && 
        ./configure --prefix=/usr/local/nginx 
        --with-http_ssl_module 
        --with-http_stub_status_module && 
        make -j 4 && make install && 
        echo "ok" >> /usr/local/nginx/html/status.html && 
        cd / && rm -rf nginx-1.16.1* && 
        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;"]
    

    构建镜像
    使用配置好的dockerfile构建镜像

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

    构建更新项目

    touch index.html
    echo "nginx:v2" > index.html
    
    #Dockerfile-nginx-v2
    FROM nginx:v1
    COPY index.html /usr/local/nginx/html
    

    构建v2镜像

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

    4.2构建php基础镜像

    构建Dockerfile

    FROM centos:7
    MAINTAINER yogi1982@163.com
    ENV VERSION=7.3.13
    
    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 openssh-clients && 
        yum clean all && 
        rm -rf /var/cache/yum/*
    
    #RUN wget http://docs.php.net/distributions/php-7.3.7.tar.gz && 
    RUN wget http://192.168.1.88/downloads/php-${VERSION}.tar.gz && 
        tar zxf php-${VERSION}.tar.gz && 
        cd php-${VERSION} && 
        ./configure --prefix=/usr/local/php 
        --with-config-file-path=/usr/local/php/etc 
        --enable-fpm --enable-opcache 
        --with-mysqli --with-pdo-mysql 
        --with-openssl --with-zlib --with-curl --with-gd 
        --with-jpeg-dir --with-png-dir --with-freetype-dir 
        --enable-mbstring --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 deamonize = no" /usr/local/php/etc/php-fpm.conf && 
        mkdir /usr/local/php/log && 
        cd /usr/local/php/etc/php-fpm.d && 
        cp www.conf.default www.conf && 
        cd / && rm -rf php* && 
        ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    
    ENV PATH $PATH:/usr/local/php/sbin
    COPY php.ini /usr/local/php/etc/
    COPY php-fpm.conf /usr/local/php/etc
    WORKDIR /usr/local/php
    EXPOSE 9000
    CMD ["php-fpm"]
    

    构建tomcat基础镜像
    构建Dockerfile

    FROM centos:7
    MAINTAINER yogi1982@163.com
    
    ENV VERSION=8.5.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://192.168.1.88/downloads/apache-tomcat-${VERSION}.tar.gz && 
        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"]
    

    以Jenkins为例,构建项目
    Dockerfile-tomcat-v2

    FROM tomcat:v1
    COPY jenkins.war /usr/local/tomcat/webapps/ROOT.war
    
  • 相关阅读:
    trackr: An AngularJS app with a Java 8 backend – Part III
    trackr: An AngularJS app with a Java 8 backend – Part II
    21. Wireless tools (无线工具 5个)
    20. Web proxies (网页代理 4个)
    19. Rootkit detectors (隐形工具包检测器 5个)
    18. Fuzzers (模糊测试器 4个)
    16. Antimalware (反病毒 3个)
    17. Debuggers (调试器 5个)
    15. Password auditing (密码审核 12个)
    14. Encryption tools (加密工具 8个)
  • 原文地址:https://www.cnblogs.com/Doc-Yu/p/12095454.html
Copyright © 2011-2022 走看看