• 马哥博客作业第十周


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

      1)、先制作基于基础镜像的centos系统镜像

        下载基础镜像:docker pull centos:centos7.8.2003

        制作Dockerfile文件:vim Dockerfile

        FROM centos:centos7.8.2003

        LABEL maintainer="wujianfu <root@www.com>"

        RUN yum -y install wget && rm -rf /etc/yum.repos.d/* && 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 -y install vim-enhanced tcpdump lrzsz bash-completion tree telnet net-tools lsof  iproute psmisc bzip2 nfs-utils
          && rm -rf /var/cache/yum/* && rm -f /etc/localtime
    && ln -s ../usr/share/zoneinfo/Asia/Shanghai /etc/localtime

        构建生成新的系统镜像:docker build -t centos7.8:v1.0 .

      2)、制作nginx编译镜像

        在Dockerfile目录下准备编译安装的相关文件:

        wget http://nginx.org/download/nginx-1.18.0.tar.gz

        编辑nginx配置文件,修改下面内容:vim nginx.conf

        user nginx;

        daemon off;

        修改nginx主页面内容:

        echo "Nginx-1.18.0 In Docker" > index.html

        制作Dockerfile文件:vim Dockerfile

        FROM centos7.8:v1.0

        LABEL maintainer="wujianfu <root@www.com>"

        RUN yum -y install gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel && useradd -r -s /sbin/nologin nginx

          && yum clean all &&

        ADD nginx-1.18.0.tar.gz /usr/local/src/

        RUN cd /usr/local/src/nginx-1.18.0 && ./configure --prefix=/apps/nginx && make && make install

          && rm -rf /usr/local/src/nginx*

        ADD nginx.cfg /apps/nginx/conf/

        COPY index.html /apps/nginx/html/

        RUN ln -s /apps/nginx/sbin/nginx /usr/sbin/nginx

        EXPOSE 80 443

        CMD ["nginx"]

        构建生成nginx镜像:docker build -t nginx1.18-centos7.8:v1.0 .

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

      FROM:指定基础镜像,此指令必须放在Dockerfile文件第一个非注释行,后续的指令都是运行于此基础镜像提供的运行环境。

      LABEL:指定镜像元数据,如维护者信息、镜像作者等。

      RUN:指定在构建镜像阶段需要执行FROM指向基础镜像所支持的shell命令,有两种格式:shell格式和exec格式。

      COPY:复制文本,一般用于在宿主机上将事先准备的配置文件复制到镜像中。

      ADD:复制和解包文件,可以是Dockerfile所在目录的相对路径,或URL,或tar文件。通过URL下载的文件权限默认600,且获取的tar文件不会自动解压缩。

      ENV:定义环境变量 ,可被后续指令(如ADD, COPY, RUN等)通过$KEY或${KEY}进行引用,并在容器运行时保持。

      VOLUME:在容器中创建一个可以从宿主机或其他容器挂载的挂载点,一般用来存放数据,即使删除容器,宿主机的目录仍会保留,从而实现数据持久保存。

      CMD:用来指定启动容器时默认执行的命令,每个Dockerfile只能有一条CMD命令,如果有多条,只有最后一条执行。

      WORKDIR:指定工作目录,为后续的指令配置工作目录,当容器运行后,进入容器内的默认工作目录。

      EXPOSE:指定容器需要对外监听的端口号,实现容器与外部通信。

      USER:指定运行容器时的用户名,后续的RUN也会使用指定用户。当服务不需要管理员权限时,可以通过该指令指定运行用户。

     

    3.请写出dockerfile的分层原理

      1)、每一行以Dockerfile的指令开头,指令不区分大小写,惯例使用大写

      2)、使用#作为注释

      3)、每一行只支持一条指令,每条指令可以携带多个参数

      4)、指令按文件的顺序从上至下执行

      5)、每个指令的执行都会生成一个新的镜像层,为了减少分层和镜像大小,尽可能将多条指令合并成一条

      6)、每次执行Dockerfile都按顺序从头开始执行,已经执行过的指令已经缓存,不需再执行,为加速镜像制作,将最常变化的指令放在Dockerfile的后面

  • 相关阅读:
    No bean named 'springSecurityFilterChain' is defined
    Spring管理hibernate Session
    集成hibernate
    Maven setting.xml
    SpringMVC集成Spring
    搭建SpringMVC
    一个简单的web project
    一文带你认识Java8中接口的默认方法
    抽象类和模板方法模式
    可能你不知道的,关于自动装箱和自动拆箱
  • 原文地址:https://www.cnblogs.com/babyblue3/p/13425459.html
Copyright © 2020-2023  润新知