天行健,君子以自强不息;地势坤,君子以厚德载物。
每个人都有惰性,但不断学习是好好生活的根本,共勉!
文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。
K8S部署Harbor三部曲:
K8S部署Harbor(三部曲之一:配置)
K8S部署Harbor(三部曲之二:部署)
K8S部署Harbor(三部曲之三:使用)本篇
前面配置安装完成后,可通过https://172.30.0.224:8443访问我们的Harbor镜像仓库
会出现以下界面,选高级
继续前往
看到Harbor登录界面
输入账号密码即可登录
默认账号为admin
默认密码为Harbor12345
登录成功后可看到有一个默认的项目library,接下来就可以正常使用Harbor了
在项目一栏中选择新建新建项目,用于存储镜像,我们创建两个项目,一个私有一个公开
注:
由于我配置的是https访问harbor仓库,就是安全配置访问,不管是公开的还是私有的都需要在docker中配置信任harbor后登陆harbor才可以操作镜像仓库中的镜像
如果你想别人也能随便用你的镜像仓库(这种情况应该不多,大多数人还是自己管控自己的镜像),可以配置http方式,不用https的安全配置,这样公开的项目应该能被别人拉取使用,总之这部分的区别有待大家去探索,我也是小小尝试了一下。
创建成功
点进去打开test01和test02,里面都是空的,接下来我们推送镜像到这两个项目中
现在我们可以到服务器中使用docker将镜像推送到我们新建的test01和test02项目中
为了能在集群中任何一个节点服务器上使用docker推送或拉取Harbor上的镜像,我们需要给所有节点的docker配置信任Harbor并登录
让docker信任harbor镜像仓库
在daemon.json文件中添加insecure-registries参数,注意拼写,不要错了,不然在不自知的情况下可能会查很久
vim /etc/docker/daemon.json
i
进入编辑
{
"exec-opts": ["native.cgroupdriver=systemd"],
"insecure-registries": ["https://172.30.0.224:8443"]
}
编辑完后Esc
退出编辑模式
shift+zz
快捷保存退出
最后不要忘了重启docker让配置生效
systemctl daemon-reload
systemctl restart docker
在docker中登录Harbor以便可正常推送拉取镜像
docker login 172.30.0.224:8443 -u admin -p Harbor12345
docker login 172.30.0.224:8443
然后输入账号和密码,不过密码看不到,建议还是用第一种命令登录
我们要推送镜像就要先有一个镜像,我们去docker中拉取hello-world镜像来演示接下来的推送拉取操作
首先在harbor所在的服务器中使用docker命令拉取hello-world镜像
docker pull hello-world
docker images
公开项目的镜像推送和拉取
根据上一小节拉取hello-world镜像到从节点k8s-worker1服务器
将hello-world镜像打标签,即以什么名称什么版本放到什么位置
如下就是将hello-world:latest镜像存放到test02项目中,名称为hello-world-hs-pu版本为20240130
docker tag hello-world:latest 172.30.0.224:8443/test02/hello-world-hs-pu:20240130
将打过标签的镜像上传到我们Harbor镜像仓库创建的test02项目中
docker push 172.30.0.224:8443/test02/hello-world-hs-pu:20240130
推送成功
然后去镜像仓库test02项目中查看镜像,可以看到已经在了
和镜像推送相似,从harbor仓库的test02项目中将镜像拉取到当前服务器中
查看含有hello名称的镜像
docker images | grep hello
首先我们先把刚才tag过的镜像删除
docker rmi -f 172.30.0.224:8443/test02/hello-world-hs-pu:20240130
现在拉取harbor仓库test02中的hello-world-hs-pu:20240130镜像
docker pull 172.30.0.224:8443/test02/hello-world-hs-pu:20240130
一秒不到完成,相当丝滑,终于体验到使用自己镜像仓库的酸爽了
然后使用命令查看镜像就可以看到镜像已经存在
私有项目的镜像推送和拉取
将hello-world镜像打标签,即以什么名称什么版本放到什么位置
如下就是将hello-world:latest镜像存放到test01项目中,名称为hello-world-hs-pr版本为20240131
docker tag hello-world:latest 172.30.0.224:8443/test01/hello-world-hs-pr:20240131
打完标签后可docker images查看打标签的镜像
将打过标签的镜像上传到我们Harbor镜像仓库创建的test01项目中
docker push 172.30.0.224:8443/test01/hello-world-hs-pr:20240131
推送成功
然后去镜像仓库test01项目中查看镜像,可以看到已经在了
和镜像推送相似,从harbor仓库的test01项目中将镜像拉取到当前服务器中
查看含有hello名称的镜像
docker images | grep hello
首先我们先把刚才tag过的镜像删除
docker rmi -f 172.30.0.224:8443/test01/hello-world-hs-pr:20240131
现在拉取harbor仓库test01中的hello-world-hs-pr:20240131镜像
docker pull 172.30.0.224:8443/test01/hello-world-hs-pr:20240131
很快,已经pull下来了
然后使用命令查看镜像就可以看到镜像已经存在
小节:
可以看到,在使用https配置的harbor镜像仓库时,对私有和公开项目中镜像的推送和拉取是没什么区别的,不过对于大多数项目内部使用的镜像仓库来说,https配置的harbor可能会更好吧。
可能报错的内容如下,可直接点击链接查看解决:
报错1:Get “https://198.30.0.111:8443/v2/”: tls: failed to verify certificate: x509: certificate relies on legacy Common Name field, use SANs instead
报错2:invalid reference format
报错3:unauthorized: unauthorized to access repository: test02/hello-world-hs-pu, action: push: unauthorized to access repository: test02/hello-world-hs-pu, action: push
换成你自己的ip端口及账号密码
docker login 172.30.0.224:8443 -u admin -p Harbor12345
当harbor服务有问题或者修改了配置需要重启harbor时
该命令需要再docker-compose.yml文件所在目录下执行
docker-compose restart
在任意路径下可用-f指定docker-compose.yml文件路径来执行重启
docker-compose -f /opt/harbor/docker-compose.yml restart
注:一定要根据自己的docker-compose.yml文件路径来执行
拉取hello-world镜像,不加版本号默认拉取最新
docker pull hello-world
可查看全部
docker images
查看镜像名称中含有指定字段的镜像
docker images | grep 字段
如查看含有h字母的镜像
docker images | grep h
将hello-world:latest镜像打标签为172.30.0.224:8443/test01/hello-world:v240131
docker tag hello-world:latest 172.30.0.224:8443/test01/hello-world-test:v240131
执行后会在docker中多出一个REPOSITORY名称为172.30.0.224:8443/test01/hello-world-test,TAG为v240131的镜像
将打过标签的镜像推送到harbor镜像仓库,下方命令表示将镜像hello-world-test:v240131推送到仓库的test01项目中
docker push 172.30.0.224:8443/test01/hello-world-test:v240131
docker rmi 172.30.0.224:8443/test01/hello-world-test:v240131
也可加-f参数强制删除
将我们harbor中的镜像拉取到本地
docker pull 172.30.0.224:8443/test01/hello-world-test:v240131
可用docker ps | grep goharbor
查看正在运行的harbor服务相关的容器
docker stop 容器名
docker ps -a | grep "goharbor" | awk '{print "docker rm "$1}'
docker images | grep "goharbor" | awk '{print "docker rmi "$1":"$2}'
如果不删除相关数据,再次安装harbor可能会报错,默认数据位置/data,如果根据本篇修改过则为/data/harbor
rm -f /data/harbor
到这应该卸载完成可重新安装harbor了
感谢阅读,祝君暴富!