全部学科
Python全栈
python
NodeJS全栈
nodejs

Dockerfile 进阶专题测试

14 题 30 分钟 难度:★★

考察知识点

  • Dockerfile 进阶 (14题): 多阶段构建、镜像瘦身、缓存利用、安全构建
💡 参考答案在文末
判断题
1

在 Dockerfile 中,ARG 变量在某个 FROM 指令之前定义后,在 FROM 之后的阶段中仍然自动可用。

A

B

2

.dockerignore 文件中可以使用 ! 前缀来取消排除某个已被匹配的文件或目录。

A

B

3

使用多阶段构建不仅可以减小镜像体积,还能提高安全性,因为最终镜像不包含编译工具和源代码。

A

B

单选题
4

在 Dockerfile 中,如果只需要将文件从构建上下文复制到镜像中,推荐优先使用哪个指令?

A

ADD,因为功能更强大

B

COPY,因为语义更明确

C

ADD 和 COPY 完全相同,任选即可

D

两个都不使用,使用 RUN cp 命令

5

.dockerignore 文件的作用与以下哪个文件最相似?

A

Dockerfile

B

.gitignore

C

docker-compose.yml

D

.env

6

Docker 多阶段构建(Multi-stage Build)的主要目的是什么?

A

加快镜像构建速度

B

减小最终镜像体积

C

支持同时构建多个镜像

D

自动优化 Dockerfile 指令顺序

7

Dockerfile 中同时定义了 ENTRYPOINT ["myapp"]CMD ["--help"],运行容器时默认执行的命令是什么?

A

myapp

B

myapp --help

C

--help

D

两者会冲突,只有一个生效

8

Dockerfile 中 ARGENV 指令的主要区别是什么?

A

ARG 用于设置容器运行时环境变量,ENV 用于构建时变量

B

ARG 只在构建时可用,ENV 在构建后和容器运行时都可用

C

ARG 和 ENV 完全相同,只是名称不同

D

ARG 用于设置镜像标签,ENV 用于设置版本号

多选题
9

以下哪些文件或目录通常应该添加到 .dockerignore 中?

A

.git

B

node_modules

C

Dockerfile

D

.env

E

src/

10

以下关于 Docker 多阶段构建的说法正确的有哪些?

A

一个 Dockerfile 中可以有多个 FROM 指令

B

可以使用 --from=<阶段名> 从前一个阶段复制文件

C

只有最后一个阶段的镜像会被保留和输出

D

每个阶段的镜像默认都会被保留

E

可以使用 AS 关键字为阶段命名

11

关于 ENTRYPOINT 指令的 exec 格式(ENTRYPOINT ["cmd", "arg"])和 shell 格式(ENTRYPOINT cmd arg),以下说法正确的有哪些?

A

exec 格式作为 PID 1 运行,能正确接收信号

B

shell 格式通过 /bin/sh -c 执行,无法正确接收 SIGTERM

C

exec 格式无法使用环境变量替换

D

shell 格式可以使用环境变量(如 ENTRYPOINT echo $HOME

E

推荐使用 exec 格式以获得正确的信号处理

12

相比 COPYADD 指令额外支持哪些功能?

A

自动解压 tar、tar.gz 等压缩文件

B

从远程 URL 下载文件到镜像中

C

复制时保留文件权限和符号链接

D

支持通配符模式匹配

E

复制目录时自动合并目标目录

填空题
13

要在构建镜像时传入 ARG 变量 VERSION=1.0,应使用命令 docker build ____________ -t myapp .。

14

在多阶段构建中,从名为 builder 的阶段复制文件应使用指令 COPY ____________ /app/dist /app/。

参考答案
1.错误 2.正确 3.正确 4.B 5.B 6.B 7.B 8.B 9.A;B;D 10.A;B;C;E 11.A;B;D;E 12.A;B 13.--build-arg VERSION=1.0 14.--from=builder
想在手机上练习这套试卷?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一套试卷 Dockerfile 基础专题测试
下一套试卷 → Kubernetes 集成专题测试
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码