要从私有仓库拉取docker镜像,核心是配置守护进程信任仓库、显式指定完整镜像地址(如192.168.1.100:5000/myapp:v1.2)、执行docker login完成认证,缺一不可。

要从私有仓库拉取 Docker 镜像,核心是让本地 Docker 守护进程“认识”并“信任”你的私有仓库地址,同时确保能通过认证。配置分三步:改守护进程配置、加仓库信任、登录认证。
配置 Docker 守护进程信任私有仓库
私有仓库若使用 HTTP(如 http://192.168.1.100:5000),Docker 默认拒绝连接,需显式声明为“不安全仓库”。编辑 /etc/docker/daemon.json(Linux)或通过 Docker Desktop 设置(macOS/Windows):
- 添加 insecure-registries 字段,填入仓库地址(含端口)
- 示例配置:
{ "insecure-registries": ["192.168.1.100:5000", "registry.example.com:8080"] }
保存后重启 Docker 服务:
sudo systemctl restart docker(Linux)
或在 Docker Desktop 中点击 “Apply & Restart”
指定完整镜像名进行拉取
Docker 不会自动把镜像名补全成私有仓库路径,必须显式带上仓库地址:
- 格式为:仓库地址/命名空间/镜像名:标签
- 例如:docker pull 192.168.1.100:5000/myapp:v1.2
- 若仓库启用了域名(如 registry.example.com),就用域名代替 IP
- 注意:不要写
http://前缀,Docker 自动按协议处理
完成登录认证(如有权限控制)
大多数私有仓库(Harbor、Nexus、自建 registry)要求登录才能拉取私有镜像:
- 运行:docker login 192.168.1.100:5000
- 输入用户名和密码,成功后凭证自动存入 ~/.docker/config.json
- 后续拉取同地址下的镜像时,Docker 会自动携带认证信息
- 如果提示
unauthorized: authentication required,说明没登录或凭证失效
常见问题快速排查
拉取失败时,优先检查这几项:
- 私有仓库服务是否正在运行(docker ps | grep registry)
- 防火墙是否放行对应端口(如 5000)
- daemon.json 是否语法正确,重启 Docker 后生效
- 镜像是否存在?可访问 http://IP:PORT/v2/_catalog 查看仓库中有哪些镜像
- 登录用户是否有该镜像的 pull 权限(Harbor 等平台需单独授权)











