10周作业

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

FROM centos:centos7.8.2003
LABEL version="v1.0"
RUN rm -f /etc/localtime && ln -s ../usr/share/zoneinfo/Asia/Shanghai /etc/localtime &&
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak &&
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo &&
sed -ri '/mirrors.aliyuncs.com|mirrors.cloud.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo &&
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo &&
yum -y install wget vim net-tools iproute psmisc bash-completion lsof tcpdump tree file &&
rm -rf /var/cache/yum/* && useradd -u 80 -r -s /sbin/nologin www

docker build -t centos7.8:v1.0 .

mkdir nginx
wget http://nginx.org/download/nginx-1.18.0.tar.gz
vim Dockerfile
内容如下:
FROM centos7.8:v1.0
LABEL version="nginxv1.0"
ADD nginx-1.18.0.tar.gz /usr/local/src/
RUN yum -y install gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel &&
rm -rf /var/cache/yum/* && cd /usr/local/src/nginx-1.18.0 &&
./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module
--with-http_realip_module --with-http_sub_module && make && make install && mkdir -p /data/web &&
echo "nginx in test" > /data/web/index.html &&
sed -ri '3a daemon off;' /usr/local/nginx/conf/nginx.conf
EXPOSE 80 443
CMD /usr/local/nginx/sbin/nginx

docker build -t centos7.8:nginx_v1.0 .
docker run -d -it --name nginx1 centos7.8:nginx_v1.0


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

FROM         指定基础镜像来源
RUN          构建镜像运行的命令
EXPOSE        当前镜像对外暴露的端口号
CMD         镜像制作build时运行的命令,切只有一条
ENV        dockerfile里面的环境变量
COPY         拷贝文件或者
VOLUME    容器数据卷,用于保存容器数据到宿主机
ADD        复制和解压缩包
LABEL        指定镜像源数据
USER        指定容器运行时的用户名
        

3.请写出dockerfile的分层原理

Dockerfile通常会指定基础镜像,这个可以认为是系统层,复制文件、执行命令等操作时会生成新的镜像层,每层只记录本层所做的更改,
而这些层都是只读的,当启动一个容器,Docker 会在最顶部添加读写层,
用户在容器内做的所有更改,如写日志、修改、删除文件等,都保存到了读写层内,一般称该层为容器层。

原文地址:https://www.cnblogs.com/blchangkong/p/13492967.html