AI 助教问 AI 助教
东方瑞通 · CKA

构建Docker镜像

通过编写 Dockerfile(含 FROM/RUN/COPY/CMD 等指令)描述镜像构建步骤,再用 docker build 生成自定义镜像,并推送至镜像仓库。

考点精讲

  1. 构建镜像靠 Dockerfile + docker build。Dockerfile 是一份描述镜像如何一步步搭建的文本,核心指令包括:FROM 指定基础镜像、RUN 在构建期执行命令(如安装软件)、COPY/ADD 把本地文件复制进镜像、CMD/ENTRYPOINT 指定容器启动时要执行的命令。每条指令通常会生成一个镜像层,层与层之间可复用缓存,从而加速构建。构建命令 docker build -t 名称:标签 . 会把当前目录作为构建上下文发送给守护进程。构建完成后可用 docker push 推送到镜像仓库供他人拉取。理解分层与缓存,是排错构建慢、镜像过大的关键。

记忆技巧

FROM 是地基,RUN 是施工,COPY 是搬料,CMD 是开门营业
构建用 build,推送用 push,登录用 login

常见误区

  • CMD 与 ENTRYPOINT 混淆:CMD 可被 run 覆盖,ENTRYPOINT 固定入口
  • 构建上下文过大导致 build 缓慢
  • 忽略 .dockerignore 把无关文件打进镜像

真题思路

  • 【示例】本页题目为教学模拟题,非真题,仅用于讲解答题思路 Dockerfile 中用于指定容器启动时默认执行命令、且可被 docker run 后接参数覆盖的指令是?
    RUN ENTRYPOINT CMD COPY
    答案:C
    解析:CMD 指定默认启动命令、可被 docker run 参数覆盖;ENTRYPOINT 是固定入口、不易被覆盖;RUN 是构建期命令;COPY 是复制文件。

常见问题

Q:CMD 和 ENTRYPOINT 怎么区分

A:ENTRYPOINT 定义固定入口命令,CMD 提供默认参数;docker run 后跟的命令会覆盖 CMD,但不会覆盖 ENTRYPOINT。

Q:怎么让构建更快

A:利用分层缓存——把不常变动的指令(如安装依赖)放在前面,常变动的代码放在后面。

Q:构建上下文太大怎么办

A:用 .dockerignore 排除不需要的文件,减小发送给守护进程的上下文体积。

相关知识

教材出处:第2章 Docker的安装和管理 构建Docker镜像

AI 助教

让 AI 助教带你深入学习,把你卡住的地方直接问它

随时为您答疑解惑

开始答疑