Harbor私有仓库搭建和镜像变量处理

Harbor私有仓库搭建和镜像变量处理
在win11上构建harbor私有镜像仓库,方便后续为k8s集群提供镜像。
由于办公电脑不能安装vmware,通过开启wsl功能搭建harbor。
wsl介绍:

https://baike.baidu.com/item/wsl/20359185?fr=ge_ala

安装wsl:
Win+R:

wsl  --install

该命令会直接安装ubuntu22.04。
由于每次关机之后,wsl也会关闭,需要设置开机自启动。(每次在cmd命令行界面上键入wsl即可进入ubuntu命令行)
可以通过wsl –shutdown 来关闭wsl

设置wsl开机自启动:
按键盘Win+r 启动运行,输入shell:startup,转到Windows“启动”目录,新建文件wsl_run.vbs(文件名自命名,扩展名是vbs就行),并保存以下内容(Ubuntu-20.04是wsl子系统名子,根据自己的改)。

Set ws = CreateObject("Wscript.Shell")
ws.run "wsl -d Ubuntu-20.04", vbhide

安装harbor:安装之前需要自行安装docker-compose

在ubuntu命令行中编辑一个sh脚本,键入以下代码,自动拉起harbor镜像服务:
vi harbor.sh
#!/bin/bash

#!/bin/bash

# 执行命令遇到错误就退出
set -e
# 脚本中遇到不存在的变量就退出
# set -u
# 执行指令的时候,同时把指令输出,方便观察结果
set -x
# 执行管道的时候,如果前面的命令出错,管道后面的命令会停止
set -o pipefail


HARBOR_IPADDR=192.168.11.20
HARBOR_PASSWORD=harbor666
HARBOR_VERSION=v2.8.2

在线安装,也就是通过网络下载镜像

wget https://ghproxy.com/https://github.com/goharbor/harbor/releases/download/${HARBOR_VERSION}/harbor-online-installer-${HARBOR_VERSION}.tgz
tar -zxvf harbor-online-installer-${HARBOR_VERSION}.tgz && cd harbor

离线安装,也就是镜像在压缩包当中

#wget https://ghproxy.com/https://github.com/goharbor/harbor/releases/download/${HARBOR_VERSION}/harbor-offline-installer-${HARBOR_VERSION}.tgz
#tar -zxvf harbor-offline-installer-${HARBOR_VERSION}.tgz && cd harbor

修改hostname

sed -i "s/hostname.*/hostname: ${HARBOR_IPADDR}/g" harbor.yml.tmpl

修改Harbor管理员密码

sed -i "s/harbor_admin_password.*/harbor_admin_password: ${HARBOR_PASSWORD}/g" harbor.yml.tmpl

注释https

sed -i "s/^https:/#https:/g" harbor.yml.tmpl
sed -i "s/port: 443/#port: 443/g" harbor.yml.tmpl
sed -i "s@certificate: /your/certificate/path@#certificate: /your/certificate/path@g" harbor.yml.tmpl
sed -i "s@private_key: /your/private/key/path@#private_key: /your/private/key/path@g" harbor.yml.tmpl
mv harbor.yml.tmpl harbor.yml
./prepare
./install.sh
docker compose down && docker compose up –d

在宿主机上登录harbor:

http:// 172.24.150.71

在黑屏模式下登录harbor准备上传镜像:

docker login http:// 172.24.150.71

报错:

root@8sfork:/usr/lib/systemd/system# docker login 172.24.150.71
Username: admin
Password:
Error response from daemon: Get "https://172.24.150.71/v2/": dial tcp 172.24.150.71:443: connect: connection refused

原因是docker不支持https,支持http的方式登录
解决方式:
修改/etc/docker/daemon.json文件,加入如下两行,

{"insecure-registries":["http://172.24.150.71"],"registry-mirrors":["https://reg-mirror.qiniu.com/"]}

重启docker:

root@8sfork:/usr/lib/systemd/system# systemctl daemon-reload
root@8sfork:/usr/lib/systemd/system# systemctl  restart docker

重新拉起harbor集群:

docker start $(docker ps -qa)

再次登录

docker login 

root@8sfork:/usr/lib/systemd/system# docker login http://172.24.150.71
Username: admin
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

在宿主机上直接拉取nginx容器,启动容器:

docker pull nginx

docker run -itd --name  mynginx --restart unless-stopped --cpus=1 -m  512M -p 8001:80  -v /mnt/c/k8s/mydir/nginx:/etc/nginx/ -v  /mnt/c/k8s/mydir/html:/usr/share/nginx/html/ nginx:latest

通过修改映射后的目录html中nginx的index.html文件内容,再将mynginx容器打包成不同的镜像版本,如v1、v2、v3、v4

如下:
Ngx镜像v1版本:
设置index.html内容为this is mynginx:v1 ,将容器打包为v1版本的nginx镜像:

cd  /mnt/c/k8s/mydir/html && echo ‘this is mynginx:v1’ > index.html

打包:

docker commit 6f7c03177381 mynginx:v1

打标签:

docker tag mynginx:v1 172.24.150.71/myitem/mynginx:v1

在harbor上新建项目myitem,将v1的镜像推送到harbor:

docker push 172.24.150.71/myitem/mynginx:v1

在这里插入图片描述

返回harbor上查看,已经成功推送到harbor上了
在这里插入图片描述

通过在index.html中写入不同的内容,以相同的方式制作v2、v3、v4版本的nginx镜像,方便后续k8s实验使用。
如下:
在这里插入图片描述

构建mysql镜像:

docker pull mysql

启动一个初始mysql容器:

docker run --name mymysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /mnt/c/k8s/mydir/mysql/my.cnf:/etc/my.cnf -d mysql:latest

配置my.cnf 修改mysql参数,登录容器配置用户修改密码等:

docker exec -it mymysql mysql -u root –p
mysql> CREATE USER 'fork'@'%' IDENTIFIED BY 'fork';
Query OK, 0 rows affected (0.01 sec)

mysql> GRANT ALL PRIVILEGES ON *.* TO 'fork'@'%';
Query OK, 0 rows affected (0.02 sec)

再将该容器保存为新的镜像:

docker commit mymysql mymysql:v1

打标签

docker tag  mymysql:v1  172.24.150.71/myitem/mymysql:v1

推送

docker push  172.24.150.71/myitem/mymysql:v1

############################################################################
创建带变量的mysql容器镜像
设置动态变量:
可以在dockerfile中指定ENV参数来配置动态环境变量,即可在启动镜像的时候填入任意变量值启动容器。
格式如下:

cat Dockerfile
…
FROM ……
ENV test=${test}
…

通过docker built –t . 重新构建镜像层

配置静态变量:
ENV test=值 直接写固定值即可。

  • 17
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你敢和我比剑吗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值