营销网站建设案例,天天自学网网址,做seo排名好的公司,在上海做兼职在哪个网站目录 一、Dockerfile保留字是什么#xff1f;
二、Docker构建流程
1. 从基础镜像运行容器
2. 执行指令并修改容器
3. 提交新的镜像层
4. 基于新镜像运行新容器
5. 执行下一条指令
6. 循环执行指令
7. 所有指令执行完成
三、保留字
1. FROM 使用基础镜像作为起点
2.…
目录 一、Dockerfile保留字是什么
二、Docker构建流程
1. 从基础镜像运行容器
2. 执行指令并修改容器
3. 提交新的镜像层
4. 基于新镜像运行新容器
5. 执行下一条指令
6. 循环执行指令
7. 所有指令执行完成
三、保留字
1. FROM 使用基础镜像作为起点
2. LABEL 指定镜像的维护者信息
3. USER 指定的用户
4. RUN 容器构建时需要运行的命令
5. COPY 复制本地文件或目录到镜像中
6. ADD 将文件的文件拷贝进镜像
7. WORKDIR 设置工作目录
8. ENV 设置环境变量
9. EXPOSE 当前容器对外暴露出的端口
10. ENTRYPOINT 用来指定一个容器启动时要运行的命令
11. CMD 定义容器启动时运行的默认命令
12. VOLUME 容器数据卷 一、Dockerfile保留字是什么
在 Dockerfile 中有一些关键字或指令是被认定为保留字的它们具有特殊的含义用于定义 Docker 镜像的构建过程。指令告诉 Docker 如何从基础镜像创建一个新的镜像。
二、Docker构建流程
1. 从基础镜像运行容器
Docker 引擎从指定的基础镜像开始创建一个新的容器实例。
2. 执行指令并修改容器
Dockerfile 中的每个指令都会导致容器内部的文件系统、环境变量等发生相应的修改。
3. 提交新的镜像层
当容器内的修改达到一个阶段时可以执行 docker commit 或类似的操作将容器的状态保存为一个新的镜像层。这个新的镜像层包含了容器的变更形成一个新的镜像。
4. 基于新镜像运行新容器
使用刚刚创建的新镜像Docker 引擎再次运行一个新的容器实例。
5. 执行下一条指令
Docker 引擎在新容器内执行 Dockerfile 中的下一条指令导致新的修改和状态。
6. 循环执行指令
迭代上述过程逐步执行 Dockerfile 中的每一条指令每次都可能创建一个新的镜像层。
7. 所有指令执行完成
当 Dockerfile 中的所有指令都被成功执行后得到的最终镜像即为包含了所有修改和变更的最终版本
三、保留字
1. FROM 使用基础镜像作为起点
Dockerfile第一条必须是FROM
# 使用基础镜像作为起点
FROM ubuntu:20.04
2. LABEL 指定镜像的维护者信息
LABEL version1.0 descriptionMy Docker Image maintaineryour_name your_emailexample.com
psMAINTAINER指定镜像的维护者
Docker 1.13 被标记为已弃用指定镜像的维护者建议使用 LABEL 替代
因为 Docker 社区更倾向于使用 LABEL 来提供元数据
MAINTAINER your_name your_emailexample.com
3. USER 指定的用户
指定该镜像以什么样的用户去执行如果不指定默认是root
USER 【userName】
4. RUN 容器构建时需要运行的命令
在镜像中执行命令更新软件包列表并安装一些软件包
两种格式
shell格式
# 等同于在终端操作的shell命令
# 格式RUN 命令行命令
RUN yum -y install vim
exec格式
# 格式RUN [可执行文件 , 参数1, 参数2]
RUN [./test.php, dev, offline] # 等价于 RUN ./test.php dev offline
RUN是在docker build时运行
5. COPY 复制本地文件或目录到镜像中
COPY 【源路径】【容器路径】
6. ADD 将文件的文件拷贝进镜像
将宿主机目录下或远程文件的文件拷贝进镜像且会自动处理URL和解压tar压缩包。
ADD https://example.com/file.tar.gz /tmp/
7. WORKDIR 设置工作目录
# 设置工作目录后续命令将在该目录下执行
WORKDIR /app
8. ENV 设置环境变量
用来在构建镜像过程中设置环境变量。
这个环境变量可以在后续的任何RUN指令或其他指令中使用
# 格式 ENV 环境变量名 环境变量值
# 或者 ENV 环境变量名值
ENV MY_PATH /usr/mytest# 使用环境变量
WORKDIR $MY_PATH
9. EXPOSE 当前容器对外暴露出的端口
EXPOSE 80
10. ENTRYPOINT 用来指定一个容器启动时要运行的命令
类似于CMD命令但是ENTRYPOINT不会被docker run后面的命令覆盖这些命令参数会被当做参数送给ENTRYPOINT指令指定的程序。
ENTRYPOINT可以和CMD一起用一般是可变参数才会使用CMD这里的CMD等于是在给ENTRYPOINT传参。
当指定了ENTRYPOINT后CMD的含义就发生了变化不再是直接运行期命令而是将CMD的内容作为参数传递给ENTRYPOINT指令它们两个组合会变成 ENTRYPOINT CMD。
FROM nginxENTRYPOINT [nginx, -c] # 定参
CMD [/etc/nginx/nginx.conf] # 变参
对于此Dockerfile构建成镜像 nginx:test后如果执行
docker run nginx test则容器启动后会执行 nginx -c /etc/nginx/nginx.conf
docker run nginx:test /app/nginx/new.conf则容器启动后会执行 nginx -c /app/nginx/new.conf
11. CMD 定义容器启动时运行的默认命令
指定容器启动后要干的事情。 有两种格式
shell格式
# CMD 命令
CMD echo hello world
exec格式
# CMD [可执行文件, 参数1, 参数2 ...]
CMD [catalina.sh, run]
与ENTRYPOINT指令配合使用
# CMD [参数1, 参数2 ....]与ENTRYPOINT指令配合使用
12. VOLUME 容器数据卷
容器数据卷用于数据保存和持久化工作。类似于 docker run 的-v参数。
VOLUME 挂载点
挂载点可以是一个路径也可以是数组
ps数组中的每一项必须用双引号
VOLUME /var/lib/mysql