马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
Dockerfile 里 FROM 指定基础镜像时,默认是去远端仓库(比如 Docker Hub)拉的。想把本地已经存在的镜像当作基础镜像,既省一次下载又能在内网离线环境里用,办法是用 ARG 指令定义一个参数、让 FROM 引用它,构建时再用 --build-arg 传值。
为什么要让 FROM 指向本地镜像
离线构建、内网环境、或者想锁定公司内部的基础镜像时,构建机如果拉不到 Docker Hub,整个 build 直接就断了。把基础镜像名参数化之后,用哪个镜像由构建命令决定,Docker 会优先使用本地已有的同名镜像。
第一步:确认本地已经有这个镜像
docker images
先把要用的基础镜像在本地备好,带上明确的标签。
第二步:Dockerfile 里用 ARG 承接基础镜像名
# 定义一个名叫 BASE_IMAGE 的参数
ARG BASE_IMAGE
# FROM 里引用这个参数
FROM $BASE_IMAGE
第三步:构建时把参数传进去
docker build --build-arg BASE_IMAGE=my-base-image:latest -t my-app .
这里 my-base-image:latest 是本地已经存在的镜像名和标签,my-app 是这次要产出的新镜像名。这样 Docker 就会拿本地的 my-base-image:latest 当基础,不再去远端拉。
实际用起来要注意三点
- 标签写全:镜像名和 tag 都要对上,图省事写 latest 容易构建到意料之外的版本
- 参数名别写死:生产脚本里把 BASE_IMAGE 抽成变量,同一个 Dockerfile 就能复用到不同基础镜像上
- 构建完复核:再用 docker images 看一眼新镜像的大小和来源,确认基础镜像没被替换
qidao123.com企服评测-应用市场 编辑提示 |