Docker 镜像仓库
镜像仓库(Registry)是存放与分发镜像的服务,Docker Hub 是最常用的公共仓库。本章讲清镜像命名规则、登录推送拉取流程,以及如何用 registry 容器搭建私有仓库。
镜像命名规则
镜像名由「地址 + 仓库/名称 + 标签」组成,默认地址是 Docker Hub、默认标签是 latest:
| 写法 | 含义 |
|---|---|
| nginx | 等价于 docker.io/library/nginx:latest,官方镜像 |
| nginx:1.27-alpine | 官方镜像,固定标签 |
| myuser/myapp:1.0 | Docker Hub 上个人命名空间 |
| registry.example.com:5000/myapp:v1 | 私有仓库完整地址 |
docker images
# 输出:REPOSITORY TAG IMAGE ID SIZE
# nginx 1.27-alpine ... 42MB
登录与推送 Docker Hub
推送前先 docker login,再用 docker tag 打上目标仓库名,最后 push;别人 pull 即得:
docker login -u myuser # 交互输入密码(也可配 credential helper)
docker tag myapp:1.0 myuser/myapp:1.0
docker push myuser/myapp:1.0
docker pull myuser/myapp:1.0
tag 并不复制镜像,只是给镜像 ID 加个别名;建议固定标签(版本号、git 提交号)而非依赖 latest,便于回滚。
搭建私有仓库
用官方 registry 镜像一条命令即可起私有仓库,配合数据卷持久化镜像文件:
docker run -d -p 5000:5000 --name registry \
-v /opt/registry:/var/lib/registry \
--restart=always registry:2
docker tag myapp:1.0 localhost:5000/myapp:1.0 # 目标地址写成仓库地址
docker push localhost:5000/myapp:1.0
docker pull localhost:5000/myapp:1.0
内网其他机器要访问,把地址换成主机 IP:192.168.1.50:5000。
HTTP 私有仓库的信任配置
默认 Docker 只信任 HTTPS 仓库,局域网纯 HTTP 仓库需在 /etc/docker/daemon.json 声明 insecure-registries 并重启 Docker:
{
"insecure-registries": ["192.168.1.50:5000"]
}
sudo systemctl restart docker # 改完 daemon.json 必须重启守护进程
国内访问加速
拉取 Docker Hub 镜像慢时,可在 daemon.json 配置 registry-mirrors 加速器(配置方法与细节见本教程安装配置一章,此处不重复展开)。
小结
镜像分发链路 = docker login → tag 成「仓库地址/名称:标签」→ push;私有化部署用 registry 容器自建仓库即可,HTTP 场景记得配 insecure-registries。版本与回滚靠固定标签实现。