Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境内的Registry也是非常必要的。Harbor是由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能。
一、docker-ce及docker-compose安装
1.安装docker-ce
安装一些必要的系统工具
yum install -y yum-utils device-mapper-persistent-data lvm2
添加docker镜像源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装 Docker-CE
yum -y install docker-ce
开启Docker服务
systemctl start docker.server
备注:
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
#请添加内核配置参数以启用这些功能。
$ sudo tee -a /etc/sysctl.conf <<-EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
然后重新加载 sysctl.conf 即可
$ sudo sysctl -p
2.安装docker-compose
curl -L https://github.com/docker/compose/releases/download/1.18.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
#查看版本
docker-compose version
二、安装Harbor
从 github harbor 官网 release 页面下载指定版本的安装包。
这里推荐使用离线安装,方便内部局域网搭建私有仓库
如果服务器可以访问github,可以使用如下命令安装
下载
wget https://github.com/vmware/harbor/releases/download/v1.1.2/harbor-offline-installer-v1.1.2.tgz
解压
tar xvf harbor-offline-installer-v1.1.2.tgz
如果服务器无法访问github
我们可以先在本机访问https://github.com/goharbor/harbor/releases下载最新版
这里以笔者部署时最新版本1.8.0为例,注意,要下载offline版本,大概有500M
下载后上传到服务器的某个路径下,在该路径下执行解压命令
tar xvf harbor-offline-installer-v1.8.0.tgz
解压完成之后查看
在第一次启动之前是没有docker-compose文件的,这里先忽略。
接下来,修改配置文件harbor.yml
(备注:如果在修改配置文件之前已经启动,可以仍在解压的路径下执行docker-compose down -v 停止并删除正在运行的实例)
配置文件修改如下几处
hostname配置成解析好的二级域名
开启https,并且将申请的ssl证书上传到服务器指定目录下(这个我们可以任意指定,只要保证和配置文件中的路径一致即可)
开启https之后,以后的访问都会自动重定向到https地址
控制台默认的用户名为admin,密码是Harbor12345
配置文件修改完成之后,可以进行初始化启动
./install.sh
如果之前已经启动过则先停止并删除容器实例
docker-compose down -v
在重启生成配置
./prepare
最后启动
docker -compose up -d
启动完成后,我们访问刚设置的hostname即可 https://harbor.efcore.cn,默认是443端口,如果端口占用,我们可以去修改docker-compose.yml文件中,对应服务的端口映射。windos,hosts文件地址:C:WindowsSystem32driversetc,将域名与ip添加进去即可。
登录之后,可以看到系统功能模块如下
项目:新增/删除项目,查看镜像仓库,给项目添加成员、查看操作日志、复制项目等
日志:仓库各个镜像create、push、pull等操作日志
系统管理
用户管理:新增/删除用户、设置管理员等
复制管理:新增/删除从库目标、新建/删除/启停复制规则等
配置管理:认证模式、复制、邮箱设置、系统设置等
其他设置
用户设置:修改用户名、邮箱、名称信息
修改密码:修改用户密码
最后,我们来进行测试
首先新建一个项目,命名为dotnet
我们根据需要决定是否公开,公开的镜像不需要docker login即可直接docker pull拉取
新建项目完毕后,我们就可以用admin账户提交本地镜像到Harbor仓库了
docker login harbor.efcore.cn
docker images
docker tag k8sdemo harbor.efcore.cn/dotnet/k8sdemo:v1.0
(备注:tag为latest的可以直接写镜像名称)
docker push harbor.efcore.cn/dotnet/k8sdemo:v1.0
推送成功后,即可在dotnet项目下查看到该镜像
接下来我们尝试pull到服务器上
docker pull harbor.efcore.cn/dotnet/k8sdemo:v1.0
然后尝试启动
在通过ip+端口访问API,一整套harbor部署流程到此结束
切换项目的私有和公开属性,在项目的配置管理中选中或反选,然后保存即可。
取消公开后需要docker login才能拉取镜像
如在安装或部署中遇到其他问题,请前往https://github.com/goharbor/harbor/issues
参考https://github.com/goharbor/harbor/tree/release-1.8.0/docs
https://blog.csdn.net/weixin_41465338/article/details/80146218?utm_source=blogxgwz0