第十周作业

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

  制作centos镜像

vim Dockerfile

FROM centos:centos7.8.2003

LABEL maintainer="duan"

RUN rm -f /etc/localtime && ln -s ../usr/share/zoneinfo/Asia/Shanghai /etc/localtime &&
    yum -y install wget && rm -rf /etc/yum.repos.d/* &&
    wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/Centos-7.repo http://mirrors.aliyun.com/repo/epel-7.repo &&
    yum -y install  vim iproute net-tools psmisc vim-enhanced tcpdump tree telnet bash-completion
    net-tools wget bzip2 lsof zip unzip nfs-utils &&
    rm -rf /var/cache/yum/* &&
     useradd -u 88 www

docker bulid  -t centos7:v1.0 -f Dockerfile

  制作nginx编译镜像

vim Dockerfile

FROM centos7:v1.0

LABEL maintainer="duanergou"
WORKDIR /usr/local/src/nginx-1.18.0
ENV VERSION="1.0" DATE='2020-08-01'
RUN mkdir /data/ && touch /data/test${DATE}_${VERSION}
COPY Centos-7.repo /etc/yum.repos.d/
COPY env.ss bulid.sh  /d1/
#ADD http://nginx.org/download/nginx-1.18.0.tar.gz /data/
ADD  nginx-1.18.0.tar.gz /usr/local/src/
RUN yum -y update && yum  install -y cmake pcre pcre-devel openssl openssl-devel gd-devel
    zlib-devel gcc gcc-c++ net-tools iproute telnet wget curl &&
    yum clean all &&
    rm -rf /var/cache/yum/*
RUN ./configure && make && make install
ENV PATH $PATH:/usr/local/nginx/sbin
CMD ["nginx","-g","daemon off;"]
EXPOSE 80

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

 

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

  LABEL 可以指定镜像元数据,如:镜像作者等

  RUN 指令用来在构建镜像阶段需要执行FROM指定镜像所支持的shell命令

  ENV 可以定义环境变量和值,会被后续指令进行引用,并在容器运行时保持

  COPY 复制本地宿主机的文本到容器中

  ADD 该命令可认为是增强版的COPY,不仅支持COPY,还支持解压缩。

  CMD 用来指定启动容器时默认执行的一个命令,且其运行结束后,容器也会停止,所以一般CMD指定的命令为持续运行且为前台命令

  ENTRYPOINT 功能类似于CMD,配置容器启动后执行的命令和参数

  ARG 如果和ENV同名,ENV覆盖ARG变量,和ENV不同的是,容器运行时不会存在这些环境变量

  VOLUME 在容器中创建一个可以从本地主机或其他容器挂载的挂载点。

  EXPOSE 指定服务端的容器需要对外暴露的端口号,以实现容器与外部通信

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

  ONBUILD 可以用来配置当构建当前镜像的子镜像时,会自动触发执行的指令,但在当前镜像构建时,并不会执行

  USER  指定运行容器时的用户名或UID,后续的RUN也会使用指定用户

  HEALTHCHECK 检查容器的健康性

  STOPSIGNAL 设置将被发生到容器退出的系统调用信号

 

3.请写出dockerfile的分层原

  dockerfile镜像里面是一层层的文件系统,叫做Union FS(联合文件系统),联合文件系统,可以将几层目录挂载到一起,形成一个虚拟文件系统,虚拟文件系统的目录结构就像普通linux的目录结构一样,镜像通过这些文件在加上宿主机的内核共同提供了一个linux的虚拟环境,每一层文件系统叫做一层layer,联合文件系统可以对每一层文件系统设置三种权限,只读、读写、和写出,但是镜像中每一层文件系统都是只读的,构建镜像的时候,从一个最基本的操作系统开始,每个构建提交的操作都相当于做一层的修改,增加了一层文件系统,一层层往上叠加,上层的修改会覆盖底层该位置的可见性。

  

原文地址:https://www.cnblogs.com/guobang/p/13429642.html