鲲鹏麒麟搭建Docker仓库

Docker Registry简介

Docker Registry是一个开源的镜像仓库工具,用于存储和分发Docker镜像。它是Docker生态系统中的核心组件之一,提供了镜像的推送(push)、拉取(pull)和管理功能。

主要特性:

1、开源免费:Apache 2.0许可证

2、轻量级:专注于核心镜像存储和分发功能

3、可扩展:支持多种存储后端(S3、Azure、Swift等)

4、安全:支持TLS和基本认证

5、API兼容:符合Docker Registry API规范

部署方式:

bash 复制代码
# 快速启动一个本地Registry
docker run -d -p 5000:5000 --name registry registry:2

# 带认证的Registry
docker run -d -p 5000:5000 --name registry \
  -v `pwd`/auth:/auth \
  -e "REGISTRY_AUTH=htpasswd" \
  -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
  -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \
  registry:2

环境版本信息

Docker:18.09.9,操作系统为银河麒麟V10sp1

创建仓库

bash 复制代码
mkdir -p /data/docker/registry
docker run -d --name registry -p 5555:5000 -v /data/docker/registry:/var/lib/registry --restart always registry:2

修改配置,支持通过接口的方式删除仓库中的镜像,如果禁止删除镜像,这一步就忽略:

bash 复制代码
[root@test /]# docker ps
CONTAINER ID        IMAGE                                            COMMAND                  CREATED             STATUS              PORTS                    NAMES
d31d022b1795        registry:2                                       "/entrypoint.sh /etc..."   2 hours ago         Up 13 minutes       0.0.0.0:5555->5000/tcp   registry
# 进入registry镜像
[root@test /]# docker exec -it d31d022b1795 sh
/ # vi /etc/docker/registry/config.yml
version: 0.1
log:
  fields:
    service: registry
storage:
  cache:
    blobdescriptor: inmemory
  filesystem:
    rootdirectory: /var/lib/registry
  delete:
    enabled: true
http:
  addr: :5000
  headers:
    X-Content-Type-Options: [nosniff]
health:
  storagedriver:
    enabled: true
    interval: 10s
    threshold: 3
# 以上delete和其下一行共两行为新增的内容

创建仓库管理界面

bash 复制代码
docker run -d -p 8809:80 --name registry-ui-delete \
  -e REGISTRY_URL=http://182.168.2.100:8810/docker/  \
  -e SINGLE_REGISTRY=true \
  -e DELETE_IMAGES=true \
  -e SHOW_CATALOG_NB_TAGS=true \
  joxit/docker-registry-ui:latest

配置Nginx代理

bash 复制代码
    server {
        listen       8810;
        server_name  localhost;
        server_tokens off;

        location / {
            proxy_pass http://182.168.2.100:8809/;
            index  index.html index.htm;
        }

        # register的对外接口,用于给UI提供接口方法获取tag等
        location /docker/ {
            proxy_pass http://182.168.2.100:5555/;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }

放开端口访问

bash 复制代码
firewall-cmd --zone=public --add-port=5555/tcp --permanent && firewall-cmd --reload
firewall-cmd --zone=public --add-port=8810/tcp --permanent && firewall-cmd --reload

测试访问

访问网址http://182.168.2.100:8810即可

相关推荐
我头发多我先学几秒前
Linux入门:简要认识Linux和基础指令
linux·运维·服务器
Urbano18 分钟前
职业工装外套核心缝制工序自动化替代分析与多品牌设备选型报告
运维·自动化
逍遥德26 分钟前
运维技术栈Linux+docker+Kubernetes+Jenkins/GitLab CI 知识点详细列表
linux·运维·docker
名字还没想好☜28 分钟前
Kubernetes CrashLoopBackOff 排查全流程:从 describe 到日志到 exit code
运维·docker·云原生·容器·kubernetes
冰封之寂1 小时前
Docker 部署与基础命令详解:从安装到容器管理全流程指南
linux·运维·docker·容器
Baron X1 小时前
Gitea Docker 部署教程
docker·gitea
隔振消音专家1 小时前
冷水机组振动传导影响及专业化减振适配治理方案
大数据·运维
Brilliantwxx1 小时前
【Linux】 软件包管理器(yum)+ Vim使用
linux·运维·服务器·开发语言·编辑器·vim
skywalk81631 小时前
在FreeBSD的Uubntu兼容环境下安装Reasonix
linux·运维·freebsd
^yi1 小时前
【Linux系统编程】对操作系统的理解
linux·运维·服务器·操作系统·系统调用·os