镜像仓库是我们下载镜像的来源,所以我们要控制好镜像仓库的访问权限,所以强烈建议使用私有的镜像仓库。一般有两个选择选项:使用第三方管理的私有仓库(如AWS, Google, Microsoft, Quay,阿里云),或者使用自己搭建的私有仓库。 Harbor是一款VMWare开源的镜像仓库管理工具,类似的镜像仓库还有docker官方开源的docker-registry镜像仓库管理工具, nexus也是一个不错的选择。为什么Harbor更受大家的欢迎呢? 这是因为Harbor提供了比docker registy更完整的功能,Harbor提供了更友好的Web UI管理、用户鉴权管理、数据持久化,还可以代理并缓存docker hub和其它镜像仓库的镜像,一旦通过Harbor代理缓存后,再也不用龟速的等待下载镜像了。
安装要求
下载并安装Harbor之前,需要先了解Harbor的软硬件要求, 目前最新版本的Harbor是V2.1.0版本,官方推荐的硬件配置是:
资源 | 最小要求 | 推荐 |
---|---|---|
CPU | 2CPU | 4CPU |
内存 | 4GB | 8GB |
磁盘 | 40GB | 160GB |
如果是仅仅是为了测试学习安装Harbor,你的配置也可以低于最低要求。
Harbor V2.1。0对软件环境的要求是:
软件 | 版本 |
Docker Engine | 17.06.0-ce 或更高版本 |
Docker Compose | 1.18.0 或更高版本 |
Openssl | 推荐最小版本 |
安装Harbor-compose
Harbor的运行依赖于docker-compose, 如果你添加了docker的官方源,那你可以直接用yum方便的安装它:
1
yum install docker-compose -y
当然你也需要安装一个docker环境。如果不知道怎么安装,可以看下文章末尾给出的官方文档链接。
下载Harbor
你可以到Github Release 下载到 Harbor的安装程序 https://github.com/goharbor/harbor/releases
推荐下载安装Harbor的稳定版本的离线安装包ß。
将下载好的包解压到你要安装的目录,我习惯于将下载的包安装到挂载的目录 /data/apps下:
1
2
tar -zxvf harbor-offline-installer-v2.1.1.tgz
mv harbor/ /data/apps/
修改Harbor的配置
Harbor的配置是一个yaml格式的文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
cd /data/apps/harbor/
cp harbor.yml.tmpl harbor.yml
vi harbor.yml
hostname: 172.16.10.105 # 改成你自己部署服务所在的IP
port: 80 # harbor服务的端口
#注释掉https这段
# https related config
#https:
# https port for harbor, default is 443
# port: 443
# The path of cert and key files for nginx
# certificate: /your/certificate/path
# private_key: /your/private/key/path
harbor_admin_password: Harbor12345 # 这里是Harbor管理员的密码,要改成自己的
安装Harbor
当上面的步骤都操作完成后,安装就比较简单了,直接一条命令执行就可以了:
1
./install.sh
访问harbor
1
2
http://172.16.10.15
默认的帐号和密码是:admin/Harbor12345 # 根据上面步骤的配置
启动停止Harbor
我们当前部署的Harbor是用docker-compose运行在docker环境下的,启动与停止的命令直用docker-compose就行了:
1
2
3
docker-compose up -d //启动
docker-compose stop //停止
docker-compose restart //停止
使用Harbor下载镜像
要使用Docker下载镜像,需要将Harbor的配置配置到docker的配置文件中:
1
2
3
4
5
vi /etc/docker/daemon.json
{
"insecure-registries": ['172.16.10.15']
}
添加完成以上的配置后,需要重启docker:
1
systemctl restart docker
通过Docker登录Harbor仓库
添加完成harbor的配置并重启docker后,可以像使用 docker hub 一样使用harbor:
1
2
3
4
5
6
7
8
docker login 172.16.10.15
Username: admin
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
上传镜像到Harbor
首先将你的应用打包成Docker镜像,这里就不多作说明了,然后直接执行命令:
1
docker push 172.16.10.15/library/app:v1
代理镜像
添加过代理项目过后,可以直接从harbor拉取到 docker hub的镜像:
1
docker pull <harbor_server_name>/<proxy_project_name>/goharbor/harbor-core:dev
如果要拉取的是官方的镜像,需要加上 library:
1
docker pull <harbor_server_name>/<proxy_project_name>/library/hello-world:latest
假如我的harbor代理项目名为public:
1
docker pull 172.16.10.15/public/library/alpine:3.12.1