搭建Harbor仓库
Harbor是什么?为什么会用到Harbor?
harbor是构建企业级私有docker镜像的仓库的开源解决方案,它是 Docker Registry的更高级封装,它除了提供友好的Web UI界面,角色和用户权限管理,用户操作审计等功能外,它还整合了K8s的插件(Add-ons)仓 库,即Helm通过chart方式下载,管理,安装K8s插件,而chartmuseum 可以提供存储chart数据的仓库【注:helm就相当于k8s的yum】
另外它还整合了两个开源的安全组件,一个是Notary,另一个是Clair,Notary类似 于私有CA中心,而Clair则是容器安全扫描工具,它通过各大厂商提供的 CVE漏洞库来获取最新漏洞信息,并扫描用户上传的容器是否存在已知的 漏洞信息,这两个安全功能对于企业级私有仓库来说是非常具有意义的。
Harbor的三种安装方式
在线安装:从Docker Hub下载Harbor相关镜像,因此安装软件包非常小
离线安装:安装包包含部署的相关镜像,因此安装包比较大
OVA安装程序(第三方):当用户具有vCenter环境时,使用此安装程序,在部署 OVA后启动Harbor
我们这里也是采用的离线安装!!!
离线安装
Harbor官方地址:https://github.com/goharbor/harbor/releases
下载所需的安装包: harbor-offline-installer-v2.1.0.tgz
一)准备的环境:docker(已安装)
github下载docker-compose
curl -L https://github.com/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
给docker-compose可执行权限
chmod +x /usr/local/bin/docker-compose
下载依赖包,默认安安装docker时已经下载
yum -y install yum-utils device-mapper-persistent- data lvm2
验证docker-compose安装完成
docker-compose -version
docker-compose version 1.25.0, build 0a186604
二)解压已经安装的harbor-offline-installer-v2.1.0.tgz
tar -zxf harbor-offline-installer-v2.1.0.tgz -C /usr/local/
cd harbor
cp harbor.yml.tmpl harbor.yml
PS: 这里跟以前不一样,没有了harbor.cfg文件,我们需要手动复制harbor.yml.tmpl在做修改即可
三)修改harbor.yml
PS: harbor作为私有仓库作用在公司内网,一般都是信任关系,没多大必要做https,使用http即可!
所以 把https相关的已经注释掉
四)安装harbor
./prepare
./install.sh
五)harbor的控制
docker-compose up -d 启动
docker-compose stop 停止
docker-compose restart 重新启动
六)访问Harbor
访问地址:http://172.16.46.111
默认的账号密码:admin/Harbor12345
Docker开启远程API
用vim编辑器修改docker.service文件
vi /usr/lib/systemd/system/docker.service
需要修改的部分:
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
修改后的部分:
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
让Docker支持http上传镜像(docker对于私有仓库默认都是使用https,不信任http)
echo '{ "insecure-registries":["192.168.3.101"] }' > /etc/docker/daemon.json
如果端口号不是 80;加上端口号:echo '{ "insecure-registries":["192.168.3.101:9080"] }' > /etc/docker/daemon.json
重新启动Docker服务
systemctl daemon-reload
systemctl restart docker
开启防火墙的Docker构建端口(需要的话)
firewall-cmd --zone=public --add-port=2375/tcp --permanent
firewall-cmd --reload
测试推送镜像
登录harbor仓库
[root@master ~]# docker login -u admin -p Harbor12345 172.16.46.111
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
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
上传镜像到私有仓库
docker tag 0901fa9da894 172.16.46.111/mynginx/nginx:v1.0
docker push 172.16.46.111/mynginx/nginx:v1.0
问题
unauthorized: unauthorized to access repository: ces/ces-auth, action: push: unauthorized to access repository: ces/ces-auth, action: push
所有操作多对的,那可能是端口模式默认的 80/443
解决方案
加端口(8080)
docker login -u admin -p Harbor12345 172.16.46.111:8080
docker push 172.16.46.111:8080/mynginx/nginx:v1.0