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、如果是基于某个镜像,则构建新的镜像时,这些重复的部分不会再重复构建。