第10周作业

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

 ①、dockerfile的制作:

FROM  centos:centos7.8.2003
LABEL author="ldy <827931744@qq.com>"
RUN   rm -rf /etc/localtime && ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && 
      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 && 
      wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo && 
      yum install -y vim tcpdump psmisc lrzsz tree bash-completion  bzip2 zip 
                     lsof net-tools nfs-utils iproute && 
      rm -rf /var/cache/yum/* && 
      useradd  -u 88 www

 ②、nginx编译的制作:

FROM  centos7.8:v2
LABEL author="ldy <827931744@qq.com>"
ADD   nginx-1.18.0.tar.gz /usr/local/src/
RUN   yum -y install gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel openssl openssl-devel && 
      cd /usr/local/src/nginx-1.18.0 &&  ./configure  --prefix=/app/nginx  && make && make install && 
      cd /usr/local/src/ && rm -rf nginx* && rm -rf /var/cache/yum/*
CMD /app/nginx/sbin/nginx -g daemon off;

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

①、FROM      来自父镜像

②、LABEL      说明镜像的一些信息

③、RUN          构建镜像是,运行的一些命令

④、ENV          环境变量。如果用在RUN,则修改了也不生效。用在CMD,修改时会生效

⑤、COPY       将宿主机文件拷贝到镜像中

⑥、ADD          类似于COPY。可以将宿主机的压缩文件自动解压,但是URL路径不行

⑦、CMD         容器运行时执行的命令。有多条只执行最后一条。通常于ENTRYPOINT配合使用

⑧、ENTRYPOINT  类似于CMD。只是容器运行时,自定义命令不可将默认命令替换,只能后面追加参数

⑨、VOLUME    相当于将容器某文件可挂载到宿主机随机一个地方。删除容器也不会删除此挂载的文件,除非docker rm -v

⑩、EXPOSE    暴露端口,可随便写,不代表这些端口都有效

3.请写出dockerfile的分层原理

1、每一个dockerfile命令就是一层镜像

2、可以先构建基础镜像,如操作系统。然后再操作系统这个镜像的基础上去构建各种软件的镜像。

3、如果是基于某个镜像,则构建新的镜像时,这些重复的部分不会再重复构建。

原文地址:https://www.cnblogs.com/ldyaly/p/13423307.html