You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何根据环境配置Docker Registry 实现开发与生产环境镜像拉取适配

原生Docker实现不同环境拉取不同Registry镜像的方案

有两种Docker原生方案可以实现需求,不需要维护多份Dockerfile也不需要额外脚本替换:

方案一:使用Docker Registry重写规则(推荐,无需修改Dockerfile)

这是对代码侵入性最低的方案,仅需要修改本地Docker daemon的配置即可全局生效:

  • 打开本地Docker daemon配置文件:Linux默认路径为/etc/docker/daemon.json,Windows/Mac可以在Docker Desktop的设置界面找到「Docker Engine」配置项
  • 添加重写规则,配置示例如下:
{
  "registry-mirrors": ["https://corporate.proxy"],
  "rewrite": {
    "(.*)": "corporate.proxy/$1"
  },
  "features": {
    "containerd-snapshotter": true
  }
}
  • 重启Docker daemon后生效,之后本地所有docker pull、docker build操作中未显式指定Registry的镜像,都会自动转发到企业私有Registry拉取。CI/CD环境无此配置时,默认就会从DockerHub拉取镜像,完全不需要修改Dockerfile内容。
    注意:该功能需要Docker 20.10及以上版本支持

方案二:使用Dockerfile ARG参数实现动态切换

如果不想修改全局Docker配置,也可以在Dockerfile中声明构建参数,通过构建时传参切换镜像源:

  • 调整Dockerfile内容如下:
# 声明镜像前缀参数,默认值为空
ARG REGISTRY_PREFIX=''
FROM ${REGISTRY_PREFIX}node:16
# 后续构建逻辑保持不变
  • 本地开发构建时,传入私有Registry前缀即可:
    docker build --build-arg REGISTRY_PREFIX=corporate.proxy/ .
  • CI/CD环境构建时不需要传入额外参数,默认就会从DockerHub拉取node:16镜像。

内容的提问来源于stack exchange,提问作者Aquarthur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 12:27:06