最简可用命令为docker run -d -p 5000:5000 --name registry registry:2,但生产环境需加-v /data/registry:/var/lib/registry持久化和--restart=always自动重启,并在Docker客户端配置insecure-registries才可推送镜像。
用官方 registry 镜像快速搭建本地私有仓库,最核心就是一条 docker run 命令,但必须配对关键参数才能真正可用。开发测试环境可极简启动,生产环境则需补全持久化、重启策略等基础保障。
最简命令:5秒启动一个可运行的仓库
执行以下命令即可在本机启动一个监听 5000 端口的 Registry:
docker run -d -p 5000:5000 --name registry registry:2
这条命令会拉取并后台运行官方 registry:2 镜像。启动后可通过 curl http://localhost:5000/v2/_catalog 验证,返回 {"repositories":[]} 即表示服务已就绪。注意:此时所有数据都存在容器内部,容器删除即镜像丢失。
推荐基础部署:加挂载 + 自动重启
实际使用中至少要加上数据持久化和异常自恢复能力:
- 先创建本地存储目录:
mkdir -p /data/registry - 再运行带卷挂载和重启策略的容器:
docker run -d \<br> -p 5000:5000 \<br> --restart=always \<br> --name registry \<br> -v /data/registry:/var/lib/registry \<br> registry:2
其中 /var/lib/registry 是 Registry 容器内默认的镜像存储路径,挂载到宿主机后,即使容器重建,已有镜像也不会丢失;--restart=always 确保宿主机重启或容器崩溃后自动恢复服务。
客户端推送前必须配置:允许非 HTTPS 的 insecure-registry
Docker 默认只信任 HTTPS 协议的仓库。本地搭建的 Registry 没配证书,属于 HTTP 服务,因此需要在所有要推送/拉取镜像的 Docker 主机上修改配置:
- 编辑
/etc/docker/daemon.json(若不存在则新建) - 添加 insecure-registries 条目,例如:
{"insecure-registries":["192.168.1.100:5000","localhost:5000"]} - 保存后重启 Docker:
sudo systemctl restart docker
否则执行 docker push localhost:5000/my-alpine 时会报错 http: server gave HTTP response to HTTPS client。
验证是否可用:推一个测试镜像
完成上述步骤后,按顺序操作即可确认整个链路通了:
- 拉一个基础镜像:
docker pull alpine - 重新打标签指向本地仓库:
docker tag alpine localhost:5000/my-alpine - 推送:
docker push localhost:5000/my-alpine - 查看仓库内容:
curl http://localhost:5000/v2/_catalog→ 应返回{"repositories":["my-alpine"]}


















