zoukankan      html  css  js  c++  java
  • N46期第10周作业


    1.通过dockerfile 制作centos系统镜像然后再制作 nginx编译镜像

    1----编写Dockerfile

    建文件夹
    mkdir -pv /data/dockerfile/{system/{centos,ubuntu,debian,alpine},web/{nginx,apache,tomcat,jdk}}

    FROM centos:centos7.8.2003
    LABEL maintainer="lz 254127092@qq.com"
    RUN rm -f /etc/localtime && ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
    yum install -y wget && cd /etc/yum.repos.d/ && rm -f * && \
    wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo && \
    wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo && \
    yum install -y vim-enhanced iproute net-tools tree psmisc tcpdump lrzsz telnet bash-completion lsof \
    bzip2 zip unzip nfs-utils && rm -rf /var/cache/yum/*

    2----写系统镜像的build.sh

    tag=$1
    docker inspect centos7.8.2003:v$tag &> /dev/null
    if [ $? -ne 0 ];then
    docker build -t centos7.8.2003:v$tag .
    echo -e "\033[1;32m `docker images` \033[0m"
    else
    echo -e "\033[1;31m 版本 $tag 已存在 \033[0m"
    fi

    3-----编写nginx的Dockerfile

    FROM centos7.8.2003:v2.0
    LABEL maintainer="lz 254127092@qq.com"
    COPY CentOS-Base.repo /etc/yum.repos.d/
    ADD nginx-1.18.0.tar.gz /usr/local/src/
    RUN yum install -y gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel openssl openssl-devel && \
    cd /usr/local/src/nginx-1.18.0 && ./configure --prefix=/apps/nginx && make && make install && \
    ln -s /apps/nginx/sbin/nginx /usr/sbin/nginx && mkdir /apps/nginx/conf.d/
    COPY nginx.conf /apps/nginx/conf/
    COPY index.html /data/html/
    ENV DOC_ROOT='/data/html/'
    ADD index.html ${DOC_ROOT}
    CMD ["/usr/sbin/nginx","-g","daemon off;"]

    4-----将需要的文件放到nginx的dockerfile的文件夹下

    5-----编写nginx的build.sh

    tag=$1
    docker inspect nginx_1.18:v$tag &> /dev/null
    if [ $? -ne 0 ];then
    docker build -t nginx_1.18:v$tag .
    echo -e "\033[1;32m `docker images` \033[0m"
    else
    echo -e "\033[1;31m 版本 $tag 已存在 \033[0m"
    fi

    2.写出10个常用的dockerfile 脚本参数及使用说明

    FROM centos7.8.2003:v2.0 拉取基础镜像

    LABEL maintainer="lz 254127092@qq.com" 指定镜像元数据

    ENV DATE="2020-08-02" VERSION="1.0" 设置环境变量

    ADD nginx-1.18.0.tar.gz /usr/local/src/ 和copy功能类似,比copy多了部分功能,能实现网络下载,压缩文件自动解压(不是从网络下载的文件)

    RUN yum install -y gcc 执行命令

    COPY nginx.conf /apps/nginx/conf/ 复制文件

    EXPOSE 将容器的端口暴露出来,实现和外部通信

    WORKDIR 指定工作目录 默认进入容器后的目录

    VOLUME 将容器内的文件或目录同步到宿主机上 ,实现删除容器后文件数据依然保存在宿主机上

    CMD 启动容器后执行的命令 ,如果有多个,只执行最后一个,上面的被覆盖

    ENTRYPOINT 指定容器启动后执行的命令 不可以被docker run 后执行的命令替代


    3.请写出dockerfile的分层原理

    镜像分层有助于节约空间,时间,排错,存储。对每层的内容进行运算,如果内容一样,可以利用缓存或者中间镜像,节约空间和时间。
    当出现命令错误时,会利用生成的中间镜像,更方便排错。分为基础镜像和应用镜像,可以分别调试。

    Docker的镜像是分层的,镜像底层为库文件且只读层即不能写入也不能删除数据,从镜像加载启动为一
    个容器后会生成一个可写层,其写入的数据会复制到宿主机上对应容器的目录

    每个指令的执行会生成一个新的镜像层,为了减少分层和镜像大小,尽可能将多条指令合并成一条指令
    制作镜像一般可能需要反复多次,每次执行dockfile都按顺序执行,从头开始,已经执行过的指令已经缓存,不需要再执行,如果后续有一行新指令没执行过,其往后的指令将会重新执行,所以为
    加速镜像制作,将最常变化的内容放下dockerfile的文件的后面

  • 相关阅读:
    刷题-力扣-剑指 Offer 22. 链表中倒数第k个节点
    刷题-力扣-617. 合并二叉树
    刷题-力扣-1109. 航班预订统计
    刷题-力扣-606. 根据二叉树创建字符串
    刷题-力扣-563. 二叉树的坡度
    扛把子组20191017-8 alpha week 2/2 Scrum立会报告+燃尽图 07
    20191017-7 alpha week 2/2 Scrum立会报告+燃尽图 06
    20191017-6alpha week 2/2 Scrum立会报告+燃尽图 05
    扛把子组20191017-5 alpha week 2/2 Scrum立会报告+燃尽图 04
    记第一次 团建
  • 原文地址:https://www.cnblogs.com/ssel/p/13428571.html
Copyright © 2011-2022 走看看