14、简单描述一下Dockerfile的整个构建镜像过程
- 首先 , 创建一个目录用于存放应用程序以及构建过程中使用到的各个文件等;
- 然后 , 在这个目录下创建一个Dockerfile文件 , 一般建议Dockerfile的文件名就是Dockerfile;
- 编写Dockerfile文件 , 编写指令 , 如 , 使用FORM指令指定基础镜像 , COPY指令复制文件 , RUN指令指定要运行的命令 , ENV设置环境变量 , EXPOSE指定容器要暴露的端口 , WORKDIR设置当前工作目录 , CMD容器启动时运行命令 , 等等指令构建镜像;
- Dockerfile编写完成就可以构建镜像了 , 使用docker build -t 镜像名:tag . 命令来构建镜像 , 最后一个点是表示当前目录 , docker会默认寻找当前目录下的Dockerfile文件来构建镜像 , 如果不使用默认 , 可以使用-f参数来指定dockerfile文件 , 如:docker build -t 镜像名:tag -f /xx/xxx/Dockerfile ;
- 使用docker build命令构建之后 , docker就会将当前目录下所有的文件发送给docker daemon , 顺序执行Dockerfile文件里的指令 , 在这过程中会生成临时容器 , 在临时容器里面安装RUN指定的命令 , 安装成功后 , docker底层会使用类似于docker commit命令来将容器保存为镜像 , 然后删除临时容器 , 以此类推 , 一层层的构建镜像 , 运行临时容器安装软件 , 直到最后的镜像构建成功 。
16、Dockerfile的基本指令有哪些?
- FROM 指定基础镜像(必须为第一个指令 , 因为需要指定使用哪个基础镜像来构建镜像);
- MAINTAINER 设置镜像作者相关信息 , 如作者名字 , 日期 , 邮件 , 联系方式等;
- COPY 复制文件到镜像;
- ADD 复制文件到镜像(ADD与COPY的区别在于 , ADD会自动解压tar、zip、tgz、xz等归档文件 , 而COPY不会 , 同时ADD指令还可以接一个url下载文件地址 , 一般建议使用COPY复制文件即可 , 文件在宿主机上是什么样子复制到镜像里面就是什么样子这样比较好);
- ENV 设置环境变量;
- EXPOSE 暴露容器进程的端口 , 仅仅是提示别人容器使用的哪个端口 , 没有过多作用;
- VOLUME 数据卷持久化 , 挂载一个目录;
- WORKDIR 设置工作目录 , 如果目录不在 , 则会自动创建目录;
- RUN 在容器中运行命令 , RUN指令会创建新的镜像层 , RUN指令经常被用于安装软件包;
- CMD 指定容器启动时默认运行哪些命令 , 如果有多个CMD , 则只有最后一个生效 , 另外 , CMD指令可以被docker run之后的参数替换;
- ENTRYOINT 指定容器启动时运行哪些命令 , 如果有多个ENTRYOINT , 则只有最后一个生效 , 另外 , 如果Dockerfile中同时存在CMD和ENTRYOINT , 那么CMD或docker run之后的参数将被当做参数传递给ENTRYOINT;
18、什么是k8s?说出你的理解K8s是kube.NETes的简称 , 其本质是一个开源的容器编排系统 , 主要用于管理容器化的应用 , 其目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署 , 规划 , 更新 , 维护的一种机制 。
推荐阅读
- Linux 被爆“满分级”关键内核级漏洞
- 基于NT架构脱胎换骨!QQ for Linux 3.0正式版上架官网
- .NET MAUI 有一个 Linux 短板
- Linux系统禁止用户使用su命令切换root
- CVE-2022-2602 Linux Kernel 本地权限提升漏洞修复过程
- linux重启服务器命令。机房服务器重启按哪个开关?
- cad工程师认证证书报考条件 cad工程师认证证书
- linux x86是什么意思;系统的x86与x64是什么意思以及他们的区别?
- 招聘|为什么要考采购工程师证书呢?
- 消防工程师报考条件是什么