网站公告

本次更新:没啥更新的

“钱塘江上潮信起,今日方知我是我”

Skip to content

镜像仓库 ​

字数: 0 字 时长: 0 分钟

Docker 镜像仓库 ​

字数: 0 字 时长: 0 分钟

1. 镜像仓库概述 ​

Docker 镜像除了可以保存在本地,也可以上传到镜像仓库中统一管理。

常见的镜像仓库包括:

  • Docker Hub:Docker 官方公共镜像仓库
  • 私有 Registry:自己搭建,只在内部使用

简单来说:

Docker Registry 可以理解为专门存放 Docker 镜像的仓库,作用类似于 GitHub 存放代码。


2. 搭建私有镜像仓库 ​

2.1 Docker Registry ​

Docker 官方提供了 registry 镜像,可以快速搭建一个简单的私有镜像仓库。

bash
docker run -d \
    --restart=always \
    --name registry \
    -p 5000:5000 \
    -v registry-data:/var/lib/registry \
    registry

参数说明:

参数作用
--restart=alwaysDocker 重启后自动启动 Registry
--name registry容器名称
-p 5000:5000将宿主机 5000 端口映射到 Registry
-v registry-data:/var/lib/registry持久化保存镜像仓库数据
registry使用官方 Registry 镜像

其中:

text
/var/lib/registry

是 Registry 在容器中保存镜像数据的目录。

可以访问:

text
http://服务器IP:5000/v2/_catalog

查看当前私有镜像仓库中保存的镜像。


2.2 带 Web UI 的 Registry ​

Docker Registry 本身没有图形化管理界面,可以通过 Docker Compose 再启动一个 Web UI。

yaml
services:

  registry:
    image: registry
    ports:
      - "5000:5000"
    volumes:
      - ./registry-data:/var/lib/registry

  ui:
    image: joxit/docker-registry-ui:static
    ports:
      - "8080:80"
    environment:
      - REGISTRY_TITLE=Docker 私有镜像仓库
      - REGISTRY_URL=http://registry:5000
    depends_on:
      - registry

启动:

bash
docker compose up -d

其中:

text
5000 → Registry 镜像仓库端口
8080 → Web UI 管理界面端口

因此:

text
http://服务器IP:8080

用于访问 Web UI,而真正用于 docker push 和 docker pull 的 Registry 地址是:

text
服务器IP:5000

3. 配置 Docker 信任地址 ​

如果私有 Registry 使用的是 HTTP,而不是 HTTPS,Docker 默认不会信任该地址。

需要修改:

bash
vi /etc/docker/daemon.json

加入:

json
{
  "insecure-registries": [
    "192.168.150.101:5000"
  ]
}

然后重新加载配置并重启 Docker:

bash
systemctl daemon-reload
systemctl restart docker

这里的 5000 是 Registry 端口,不是 Web UI 的 8080 端口。


4. 推送和拉取镜像 ​

4.1 给镜像重新打 Tag ​

假设本地已经有:

text
nginx:latest

要推送到私有仓库,需要先重新添加 Tag:

bash
docker tag nginx:latest 192.168.150.101:5000/nginx:1.0

可以理解为:

text
原镜像
nginx:latest
      ↓
重新命名
      ↓
192.168.150.101:5000/nginx:1.0

镜像名称中的仓库地址告诉 Docker:

这个镜像以后需要推送到哪个 Registry。


4.2 推送镜像 ​

执行:

bash
docker push 192.168.150.101:5000/nginx:1.0

将镜像上传到私有镜像仓库。


4.3 拉取镜像 ​

其他服务器可以通过:

bash
docker pull 192.168.150.101:5000/nginx:1.0

从私有镜像仓库下载镜像。

整个过程可以理解为:

text
本地镜像
nginx:latest
     ↓
docker tag
     ↓
192.168.150.101:5000/nginx:1.0
     ↓
docker push
     ↓
私有 Registry
     ↓
docker pull
     ↓
其他 Docker 主机

5. 小结 ​

私有镜像仓库主要涉及三个操作:

bash
# 给镜像添加私有仓库地址
docker tag nginx:latest 192.168.150.101:5000/nginx:1.0

# 推送镜像
docker push 192.168.150.101:5000/nginx:1.0

# 拉取镜像
docker pull 192.168.150.101:5000/nginx:1.0

简单记住:

tag 指定镜像要去哪个仓库,push 上传镜像,pull 下载镜像。

Noctiflorous Garden · MIT License