使用Harbor搭建Docker私有镜像仓库

文章目录

  • registry
    • 启动
  • harbor
  • Harbor功能简介

Docker的镜像仓库和java世界中的jar一样,java的jar由maven中心仓库管理,也可以自己在组织内部搭建私服

Docker镜像的公有仓库,如:dockerhub、阿里云镜像中心等,都提供了公开的和私有的仓库类型。

但在公司内部,我们往往还是希望完全由自己来管理镜像,不托管在其他第三方服务上。

registry

传统上,我们可以使用 registry

docker pull daocloud.io/registry

启动

  • 推荐启动方式
docker run \
         -e SETTINGS_FLAVOR=s3 \
         -e AWS_BUCKET=acme-docker \
         -e STORAGE_PATH=/registry \
         -e AWS_KEY=AKIAHSHB43HS3J92MXZ \
         -e AWS_SECRET=xdDowwlK7TJajV1Y7EoOZrmuPEJlHYcNP2k4j49T \
         -e SEARCH_BACKEND=sqlalchemy \
         -p 5000:5000 \
         daocloud.io/registry
  • 快速启动方式
docker run -d -p 5000:5000 --name registry 2e2f252f3c88
  • 上传
docker tag server3 localhost:5000/server3
docker push localhost:5000/server3

  • 下载

docker pull localhost:5000/server3

harbor

daocloud.io/registry不够完善,没有界面,生产环境可以使用harbor

harbor下载

我们选择线下安装

使用Harbor搭建Docker私有镜像仓库_第1张图片

解压,修改 harbor.cfg文件

...
hostname = hub.zhangliuning.com:8080
secretkey_path = ./data
...

其他的包括用户名密码、https配置,都在配置文件中

其他系统可以直接指向install命令了,Mac系统不行,因为使用了很多目录挂载,Mac是不允许的

在根目录下,打开docker-compose.yml,修改挂载目录

把所有的本机挂载目录设置为当前目录下的目录

nginx的对外端口从80改为8080

执行./install命令

执行过程中产生的问题,根据提示,都应该可以自己解决

http://localhost:8080
登陆的默认用户名密码:admin/Harbor12345

这个可以在harbor.cfg文件中修改

在推送的时候,默认推送是需要https协议的,我们目前并没有,

解决方案

1、部署到公网上,申请一个免费的https证书,然后在harbor.cfg文件中做相关修改

2、设置docker,使其支持http协议

对于非mac系统,在docker启动的时候加一个参数

sudo chmod +w /etc/docker/daemon.json
sudo vi /etc/docker/daemon.json

{
  "insecure-registries": [
    "hub.zhangliuning.com:8080"
  ]
}


service docker restart

Harbor功能简介

除了最基本的镜像的拉取上传外,Harbor还提供了以下功能

  • 复制

在生产环境中部署多个harbor节点,我们往主节点上推送镜像,但是可以做到主节点和其他harbor节点之间镜像的同步

这么做的目的在于,

第一:保证harbor的高可用性

第二:同一个环境下往往走的是内网,网速是比较快的,如果使用本地环境一个个去推送,不仅麻烦,而且速度慢

  • 日志

记录操作流水

  • 其他

其他功能,我们只要看界面,就能大概知道是什么功能,使用起来还是比较简单的

你可能感兴趣的:(docker,harbor)