1 下载harbor压缩包
下载地址:
https://github.com/goharbor/harbor/releases/download/v2.4.3/harbor-offline-installer-v2.4.3.tgz
我选择的是offline的压缩包,online下载可能不稳定
2 解压harbor压缩包,导出镜像
tar xf harbor-offline-installer-v2.4.3.tgz
会得到一个harbor目录,cd进这个目录
cd harbor
[root@k8s-master harbor]# ls common.sh harbor.v2.4.3.tar.gz harbor.yml.tmpl install.sh LICENSE prepare
其中会看到一个镜像文件的压缩包,导出来即可
docker load < harbor.v2.4.3.tar.gz
3 修改harbor.yml文件参数
cp harbor.yml.tmpl harbor.yml vim harbor.yml
3.1 修改一: hostname的值,改为域名或者ip
3.2 如果用https–443端口
有公网ip则需要自己做证书,无公网ip则需要自己做证书,且需要注释掉80端口,如:
自己做diy安全证书过程(虽然并不安全,只是为了模拟443端口):
mkdir cert cd cert/ openssl genrsa -out server.key 2048 openssl req -x509 -new -nodes -key server.key -subj "/CN=192.168.123.152" -days 3650 -out server.crt
[root@k8s-master cert]# ls
server.crt server.key
ls可以看到自己创建号的密钥和证书,可以到harbor.yml文件中,将server.crt 和server.key中的绝对路径写上去
vim /root/harbor/harbor.yml
# https related config https: # https port for harbor, default is 443 port: 443 # The path of cert and key files for nginx certificate: /root/harbor/cert/server.crt private_key: /root/harbor/cert/server.key
然后执行harbor目录中的prepare文件
./prepare
/prepare 会得到一个docker-compose.yml文件
想要运行这个docker-compose.yml文件需要下载docker-compose
yum -y install docker-compose
docker-compose up -d
这个时候可以去浏览器访问harbor仓库了,输入master的ip即可
会显示不安全,可以点击继续访问
默认的用户名和密码如下
harbor仓库的443端口创建完成
harbor仓库的80端口更加简单,注释掉443相关内容
4 每个节点访问harbor仓库的设置
vim /etc/docker/daemon.json { "insecure-registries": ["192.168.123.152"] }
在每个节点进行此操作,ip改为master 的ip即可,重启docker
systemctl restart docker
5 pull和push镜像注意事项
push一个镜像到harbor的时候,需要授权才可以操作,因此先到harbor仓库创建一个用户
用户创建完毕则在项目中加入用户
用户创建完毕可以在需要push镜像的节点上,登录该用户
docker login 192.168.123.152
输入命令密码,登陆成功如下显示
[root@k8s-master ~]# docker login 192.168.123.152 Username: chenjiao 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 [root@k8s-master ~]#
这时候可以push镜像了,将需要推送的镜像标签修改一下,改为master节点的ip+要推送的地址。比如推给公开仓库library,以nginx为例子
则
docker tag nginx:1.16.1 192.168.123.152/library/nginx:1.16.1
然后再进行push
docker push 192.168.123.152/library/nginx:1.16.1
library公共仓库的pull不需要用户登录,但是私有仓库需要用户授权
完结撒花