第10周作业:

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

docker pull  centos:centos7.7.1908

vim Dockerfile

#centos系统镜像
FROM centos:centos7.7.1908                                                                                                                                             
LABEL maintainer="yindesheng <941268778@qq.com>"
RUN yum install -y wget && rm -rf /etc/yum.repos.d/* && wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo \
    && yum install -y gcc make autoconf gcc-c++ glibc glibc-devel pcre pcre-devel openssl epel-release \
    openssl-devel systemd-devel zlib-devel vim lrzsz tree tmux lsof tcpdump wget \
    net-tools iotop bc bzip2 zip unzip nfs-utils man-pages \
    && yum clean all \
    && rm -rf /etc/localtime \
    && ln -s ../usr/share/zoneinfo/Asia/Shanghai /etc/localtime
CMD ["/bin/bash"]

docker build -t  centos-base:1.7 .

vim Dockerfile 

#nginx编译镜像
FROM centos-base:1.7                                                                                                                                                   
LABEL maintainer="yindesheng<941268778@qq.com>"
ADD nginx-1.16.1.tar.gz /usr/local/src
RUN cd /usr/local/src/nginx-1.16.1  && ./configure --prefix=/apps/nginx  && make && make install \
    && rm -rf /usr/local/src/nginx* \
    && useradd -r nginx
COPY nginx.conf /apps/nginx/conf/
EXPOSE 80 443
CMD ["/apps/nginx/sbin/nginx"]

 docker build -t nginx-centos7:1.16.1 . 


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

FROM:指明基础镜像

LABEL:指明镜像元数据,如:镜像作者

RUN:执行shell指令

CMD:容器启动命令

ENTRYPOINT:容器启动后默认执行的命令及参数

EXPOSE:暴露端口

COPY:复制文本

ADD:复制和解压文件

ENV:设置环境bianliang

VOLUME:挂载点

USER:指定当前用户

 

3.请写出dockerfile的分层原理

       容器其实是在镜像的最上面加了一层读写层,在运行容器里文件改动时,会先从镜像里要写的文件复制到容器自己的文件系统中(读写层)。
如果容器删除了,最上面的读写层也就删除了,改动也就丢失了。所以无论多少个容器共享一个镜像,所做的写操作都是从镜像的文件系统中复制过来操作的,

并不会修改镜像的源文件,这种方式提高磁盘利用率。镜像打包也只打包差异镜像。

posted @ 2020-08-02 22:25  無心的Man  阅读(72)  评论(0编辑  收藏  举报