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