Docker 镜像仓库

镜像仓库(Registry)是存放与分发镜像的服务,Docker Hub 是最常用的公共仓库。本章讲清镜像命名规则、登录推送拉取流程,以及如何用 registry 容器搭建私有仓库。

镜像命名规则

镜像推送拉取流程 镜像名由「地址 + 仓库/名称 + 标签」组成,默认地址是 Docker Hub、默认标签是 latest:

写法含义
nginx等价于 docker.io/library/nginx:latest,官方镜像
nginx:1.27-alpine官方镜像,固定标签
myuser/myapp:1.0Docker 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。版本与回滚靠固定标签实现。

笔记加载中…