Linux运维笔记[14]-搭建内网docker镜像服务

摘要

使用docker-registry搭建内网镜像服务,平替DockerHub.

原理简介

docker-registry简介

[https://juejin.cn/post/7214037206863495205]
官方提供了Docker Hub网站来作为一个公开的集中仓库,然而,本地访问Docker Hub速度往往很慢,并且很多时候我们需要一个本地的私有仓库只供网内使用.
Docker仓库实际上提供两方面的功能,一个是镜像管理,一个是认证。前者主要由docker-registry项目来实现,通过http服务来上传下载;后者可以通过docker-index(闭源)项目或者利用现成认证方案(如nginx)实现http请求管理。
docker registry 就是管理 docker 镜像的服务, Docker 公司维护的 registry 就是 hub.docker.com ,它可以让我们方便的下载预先做好的镜像。

  • docker registry本身非常轻量,具有核心功能:镜像服务器.

docker harbor简介

[https://juejin.cn/post/7214037206863872037]
harbor是一个由vm公司开源的企业级容器镜像仓库,有以下功能

  • 管理用户界面
  • 基于角色的访问控制
  • LDAP/AD 集成及日志审计等基本运维操作

harbor是构建企业级私有docker镜像的仓库的开源解决方案,它是 Docker Registry的更高级封装,它除了提供友好的Web UI界面,角色和用户权限管理,用户操作审计等功能外,它还整合了K8s的插件(Add-ons)仓 库,即Helm通过chart方式下载,管理,安装K8s插件,而chartmuseum 可以提供存储chart数据的仓库。

  • harbor体量较大,需要配置大约8个容器以docker-compose或者k8s等方式才能运行.

实现

搭建docker-registry服务

[https://hub.docker.com/r/joxit/docker-registry-ui]
[https://distribution.github.io/distribution/]

docker pull registry:2.8.3
sudo mkdir -p /lvm-group3/docker_registry
sudo chmod 777 /lvm-group3/docker_registry
sudo docker run --name docker_registry -p 5000:5000 --restart always -v /lvm-group3/docker_registry:/var/lib/registry -d registry:2.8.3

配置本地环境

允许http服务器(默认是只能https).

{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "experimental": false,
  "features": {
    "buildkit": true
  },
  "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",
    "https://hub-mirror.c.163.com",
    "http://hub.docker.qsbye.cn"
  ],
  "insecure-registries": ["hub.docker.qsbye.cn:5000"]
}
macOS的docker配置内网服务器

重启docker生效
然后配置域名映射:

sudo su
echo "192.168.100.187 hub.docker.qsbye.cn" >> /etc/hosts

测试上传

function docker-upload-rm() {
    TEMP_NAME="$1"
    echo "TEMP_NAME: $TEMP_NAME"
    docker tag "$TEMP_NAME" hub.docker.qsbye.cn:5000/"$TEMP_NAME"
    docker push hub.docker.qsbye.cn:5000/"$TEMP_NAME"
    docker rmi hub.docker.qsbye.cn:5000/"$TEMP_NAME"
    docker rmi "$TEMP_NAME"
}
# 使用函数
docker-upload-rm "chinawrj/bouffalolab_build_bunch:latest"

查看上传的镜像:

curl http://192.168.100.187:5000/v2/_catalog
# 或者
curl http://hub.docker.qsbye.cn:5000/v2/_catalog

效果

TEMP_NAME: chinawrj/bouffalolab_build_bunch:latest
The push refers to repository [hub.docker.qsbye.cn:5000/chinawrj/bouffalolab_build_bunch]
fc019661d1d0: Pushed 
9d9a6e290f10: Pushed 
9fc4f5d4114a: Pushed 
8c2c8a364a43: Pushed 
702f0068b2ae: Pushed 
f42740652446: Pushed 
66677a60058a: Pushed 
9a3fc559cb2e: Pushed 
02473afd360b: Pushed 
dbf2c0f42a39: Pushed 
9f32931c9d28: Pushed 
latest: digest: sha256:2fb1bd9adea61493cf18b0bcc903e98ee0edf69374f5cce5e99bfa787ced7742 size: 2634
Untagged: hub.docker.qsbye.cn:5000/chinawrj/bouffalolab_build_bunch:latest
Untagged: hub.docker.qsbye.cn:5000/chinawrj/bouffalolab_build_bunch@sha256:2fb1bd9adea61493cf18b0bcc903e98ee0edf69374f5cce5e99bfa787ced7742
Untagged: chinawrj/bouffalolab_build_bunch:latest
Untagged: chinawrj/bouffalolab_build_bunch@sha256:2fb1bd9adea61493cf18b0bcc903e98ee0edf69374f5cce5e99bfa787ced7742
posted @ 2024-02-02 17:10  qsBye  阅读(119)  评论(0编辑  收藏  举报