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