鲲鹏麒麟搭建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规范
部署方式:

# 快速启动一个本地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

创建仓库

mkdir -p /data/docker/registry
docker run -d --name registry -p 5555:5000 -v /data/docker/registry:/var/lib/registry --restart always registry:2

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

[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和其下一行共两行为新增的内容

创建仓库管理界面

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代理

    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;
        }
    }

放开端口访问

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即可
在这里插入图片描述

### 在银河麒麟操作系统中安装和配置Docker #### 一、准备工作 在开始之前,需确认操作系统的具体版本以及硬件架构。银河麒麟 V10 支持多种架构,其中 ARM64 是常见的目标平台之一。为了确保兼容性,应下载与当前系统匹配的 Docker 版本。 根据官方文档[^3],可以访问 `https://download.docker.com/linux/ubuntu/dists/` 获取适用于不同 Ubuntu 版本的离线安装包。由于银河麒麟基于 Debian 或 Ubuntu 的内核环境,因此可以选择与其版本号相对应的 Ubuntu 发行版(如 Bionic, Focal 等)。通过查阅博客文章中的版本映射表[^3],可找到适合的操作系统代号。 --- #### 二、离线安装 Docker ##### 1. 下载 Docker 离线安装包 前往 Docker 官网提供的静态链接页面,选择稳定版本并下载压缩包: ```bash wget https://download.docker.com/linux/static/stable/aarch64/docker-24.0.2.tgz ``` 解压该文件至临时目录,并将必要的二进制文件移动到 `/usr/bin` 路径下: ```bash tar -xvzf docker-24.0.2.tgz mv docker/* /usr/bin/ ``` 此过程会完成核心组件的部署,包括但不限于以下几个部分[^1]: - **docker-ce**: 主体程序; - **docker-ce-cli**: 命令行工具; - **containerd.io**: 容器运行时支持模块; - **docker-buildx-plugin**, **docker-compose-plugin**: 插件扩展功能。 --- ##### 2. 配置 Docker Compose 除了基础容器管理外,通常还需要集成 Docker Compose 工具来简化多容器编排工作流。对于 ARM64 架构,可以直接获取预构建好的二进制文件[^2]: 执行如下命令将其放置于标准路径并赋予执行权限: ```bash cp docker-compose-linux-aarch64 /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose ``` 验证安装成功与否可通过以下方式测试: ```bash docker-compose version ``` 如果返回具体的版本信息,则说明已正确加载插件。 --- #### 三、初始化服务 为了让 Docker 正常运作起来,还需创建相应的 systemd 单元文件[^4]: 编辑一个新的服务定义脚本位于 `/etc/systemd/system/docker.service` 中,内容大致如下所示: ```ini [Unit] Description=Docker Daemon After=network.target [Service] ExecStart=/usr/bin/dockerd --host=unix:///var/run/docker.sock Restart=always [Install] WantedBy=multi-user.target ``` 保存修改之后重新加载守护进程配置以便生效新的更改: ```bash systemctl daemon-reload ``` 随后即可尝试开启服务实例并设定为随系统引导自动激活状态: ```bash systemctl start docker systemctl enable docker.service ``` 最后一步检查状态以确认无误: ```bash systemctl status docker ``` 此时应该能够看到绿色标记代表正常运转的服务指示灯图案。 --- #### 四、后续优化建议 尽管基本框架已经搭建完毕,但仍有一些额外措施可以帮助提升用户体验或者安全性方面考虑因素: - 添加当前登录账户进入特定组群从而免除每次调用都需要附加 sudo 权限麻烦事: ```bash usermod -aG docker $USER ``` - 更新默认存储驱动类型可能依据实际需求调整成更高效的选项比如 overlay2 : 编辑配置文件 `/etc/docker/daemon.json` 加入字段 `"storage-driver": "overlay2"`. - 如果网络连接存在问题的话记得查看防火墙规则是否允许外部通信端口开放情况。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

angushine

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值