第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的分层原理
容器其实是在镜像的最上面加了一层读写层,在运行容器里文件改动时,会先从镜像里要写的文件复制到容器自己的文件系统中(读写层)。
如果容器删除了,最上面的读写层也就删除了,改动也就丢失了。所以无论多少个容器共享一个镜像,所做的写操作都是从镜像的文件系统中复制过来操作的,
并不会修改镜像的源文件,这种方式提高磁盘利用率。镜像打包也只打包差异镜像。