安装docker本地私有镜像仓库
方案1:搭建docker本地私有镜像仓库registry
docker命令行启动私有仓库容器
参考: https://juejin.cn/post/7173180582518587406
# 拉取仓库容器
docker pull registry
# 创建仓库数据目录
mkdir -p /data/registry
# 运行私有仓库容器
## -itd:在容器中打开一个伪终端进行交互操作,并在后台运行
## -v:把宿主机的/data/registry目录绑定到容器/var/lib/registry目录(这个目录是registry容器中存放镜像文件的目录),来实现数据的持久化;
## -p:映射端口;访问宿主机的5000端口就访问到registry容器的服务了
## --restart=always:这是重启的策略,在容器退出时总是重启容器
## --name registry:创建容器命名为registry
## registry:latest:这个是刚才pull下来的镜像
docker run -itd -v /data/registry:/var/lib/registry -p 5000:5000 --restart always --name registry registry:latest

docker-compose启动私有仓库容器
# ~/docker-registry/docker-compose.yml
services:
# registry镜像仓库可视化服务
registry-ui:
image: joxit/docker-registry-ui:main
container_name: registry-ui
ports:
- "8280:80"
environment:
SINGLE_REGISTRY: "true" # 设置为单仓库模式(仅连接一个Registry仓库)
REGISTRY_TITLE: "Docker Registry UI" # 设置UI界面标题
DELETE_IMAGES: "true" # 启用镜像删除功能(允许通过UI删除镜像)
SHOW_CONTENT_DIGEST: "true" # 显示镜像内容摘要(Digest)
NGINX_PROXY_PASS_URL: "http://registry:5000" # 指定后端Registry服务的URL
SHOW_CATALOG_NB_TAGS: "true" # 在仓库目录中显示标签数量
CATALOG_MIN_BRANCHES: "1" # 目录列表最小分支数(控制UI显示范围)
CATALOG_MAX_BRANCHES: "1" # 目录列表最大分支数(控制UI显示范围)
TAGLIST_PAGE_SIZE: "100" # 设置标签列表每页显示数量
REGISTRY_SECURED: "false" # 禁用Registry安全认证(不启用HTTPs连接)
CATALOG_ELEMENTS_LIMIT: "1000" # 限制目录页显示元素数量(性能优化)
# 定义服务依赖
depends_on:
- registry # 依赖 registry 服务
# 定义registry 服务
registry:
image: registry:latest
container_name: registry
ports:
- "5000:5000"
environment:
# 启用删除功能
REGISTRY_STORAGE_DELETE_ENABLED: "true"
# 镜像的存储路径
REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: /data
volumes:
- registry_data:/data
# 开机自启动
restart: always
volumes:
registry_data:
external: false # 数据卷为内部创建
启动registry容器
# 启动容器
docker-compose up -d
方案2:搭建企业级私有镜像仓库Harbor
Harbor介绍
项目地址: https://github.com/goharbor/harbor/releases
Harbor是企业级私有仓库.

安装Harbor


部署Harbor HTTP
默认的账号是: admin
默认密码是: Harbor12345

配置Harbor

docker客户端使用私有镜像仓库

1. docker客户端配置私有仓库可信任
修改docker镜像配置文件/etc/docker/daemon.json,添加私有仓库(可配置多个)
vim /etc/docker/daemon.json

{
"insecure-registry": [
"192.168.189.133:5000"
],
"experimental": true
}

修改完后重启docker
# 重启docker服务
systemctl restart docker
2. 打标签
# 修改标签
docker tag amd64_alpine:3.20.3 192.168.189.133:5000/amd64_alpine:3.20.3

3. push推送打过标签的镜像
# 推送到仓库
docker push

查看当前仓库中的镜像
# 查看仓库中的镜像
curl http://192.168.44.20:5000/v2/_catalog

4. 查看私钥仓库中提供的镜像版本
# 安装skopeo
dnf install -y skopeo jq
# 查询私有镜像仓库提供的镜像版本
skopeo list-tags docker://docker.1ms.run/library/nginx
# 以json格式输出
skopeo list-tags docker://docker.1ms.run/library/nginx |jq


curl查看该镜像标签列表
# 查看该镜像标签列表
# curl http://<私有仓库ip>:5000/版本/镜像名称/tags/list
curl http://192.168.44.20:5000/v2/${镜像名称}/tags/list

浏览器直接查看

结果验证
删除镜像,后面进行拉取镜像测试
从私有仓库拉取镜像

其他主机拉取该镜像

本文详细介绍如何安装和配置私有Docker镜像仓库Harbor,包括使用docker-compose进行部署及HTTP配置。此外,还介绍了如何利用Harbor来部署GitLab代码仓库。

8748

被折叠的 条评论
为什么被折叠?



