测验:构建上下文与可复现性
docker build .的最后一个.指的是什么?
- 构建上下文目录以发送给构建器
- Dockerfile所在文件路径
- 生成的图像保存在哪里
- 缓存目录
即使不修改Dockerfile,COPY . .缓存也频繁损坏的常见原因是什么?
- 因为上下文中包含
.git等频繁更改的文件, - 重新启动 Docker 守护进程
- 基础图像每次都会改变
- 层数太多
.dockerignore和.gitignore之间的正确关系是什么?
- 这是同一个文件,您只需要一个
.dockerignore自动继承.gitignore- 不同用途的内容可能不同,例如
.git仅包含在.dockerignore中。 .dockerignore从构建结果镜像中删除文件
不使用 FROM python:3.12 而推荐 FROM python:3.12.7-slim 的原因是什么?
- 图像名称简短且易于阅读。
- 苗条的形象总是转得更快
- 浮动标签根据时间指向不同的图像,因此无法重现构建。
- 层缓存可以更多地复用
为什么不应将构建时的令牌传递给ARG?
- 该值保留在
docker history等中,以便任何拥有该图像的人都可以看到它。 - 由于 ARG 只接受字符串,因此令牌格式受到限制。
- 随着因子数量的增加,构建速度会减慢。
- 每个ARG增加一层。
我发现.env包含在图像中。如果在后面加上RUN rm .env会怎么样?
- 变得安全 - 您的文件将会消失
- 原件保留在前层,仍然可以提取。
- 构建失败
- 图像尺寸缩小