如何离线本地构建Docker容器?使用--pull never仍报错
无网络环境下Docker Compose构建仍连远程仓库的解决办法
问题根源
docker compose up --pull never 只控制compose配置中直接指定的服务镜像(即image:字段定义的镜像),但构建自定义镜像时,Docker引擎默认会尝试校验基础镜像的远程元数据——哪怕本地已经存有该基础镜像,无网络环境下就会触发DNS解析失败的错误。
解决步骤
提前拉取基础镜像到本地
在有网络时,预先拉取Dockerfile中用到的基础镜像:docker pull eclipse-temurin:21.0.4_7-jre-ubi9-minimal修改docker-compose.yml限制构建行为
在需要构建的服务的build配置块中添加pull_policy: never,强制Docker构建时仅使用本地镜像,不发起远程请求:services: # 替换为你的实际服务名称 app-service: build: context: . dockerfile: Dockerfile pull_policy: never # 关键配置:禁用构建阶段拉取基础镜像 # 其他服务配置项...重新执行构建命令
运行你原本的命令即可:docker compose up -d --build --pull never
修改完成后,Docker构建自定义镜像时会直接调用本地已有的基础镜像,不再尝试连接远程仓库,无网络环境下也能正常完成构建。
内容的提问来源于stack exchange,提问作者evgi
相关产品推荐
相关产品推荐

