通过docker来搭建Harbor仓库的基本方法

在完成 harbor 搭建前,需安装好 docker 与 docker-compose。docker 的安装命令比较简 单,直接 yum install -y docker。随后启动 docker。然后执行 systemctl start docker 与 systemct enable docker,而 docker-compose 的安装则需要几步。 安装 pip 工具 1.首先检查 linux 有没有安装 python-pip 包,直接执行 yum install python-pip 2.没有 python-pip 包就执行命令 yum -y install epel-release 3.执行成功之后,再次执行 yum install python-pip 4.对安装好的 pip 进行升级 pip install --upgrade pip,如果没必要也可以不升级 至此,pip 工具就安装好了。 接下来执行 pip install -U docker-compose,等待安装成功。查看是否安装成功可输入 docker-compose version 查看版本。


image.png

另一种方式更简单

Github源

Sudo curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-unam](https://github.com/docker/compose/releases/download/1.22.0/docker-compose-unam)

e -s-uname -m` -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose

这次使用的Harbor仓库镜像来自于Harbor官方,可以选择离线下载或者是在线下载,当下载到物理机后再拖入虚拟机中进行安装。

image.png

点击Download Now,可以发现有许多版本可以下载,我选择的是v1.5.2版本的在线下载(版本1.5的网上教程多,比较新版的配置文件与之有些不同,在对harbor配置文件不熟悉的情况下不建议自己花太多功夫去研究)。


image.png

或者直接敲命令

w****get https://storage.googleapis.com/harbor-releases/release-1.5.0/harbor-online-installe-v1.5.2.tgz

离线下载的指令与之相似,但或许是离线下载的目标更大,我在尝试的时候迟迟拉不下来,因此选择了在线下载。

接下来,tar -****xvf harbor-o****n****line-installer-v1.5.****2****.tgz 解压文件。解压缩后,harbor目录里会生成harbor.cfg配置文件,我们可以在里面更改相应的配置,而相关配置的介绍可以浏览https://www.cnblogs.com/guyeshanrenshiwoshifu/p/9166195.html。

image.png

输入命令vi /root/harbor/harbor.cfg,在里面可以设置访问地址,可以是主机名,ip,但不能是127.0.0.1和localhost。注意,我在这里设置的是主机名
image.png

此外,还可以对访问协议进行设置,默认是http,如果设为https,则nginx ssl设置on。登录密码等默认参数也能此进行修改。当改完参数后,在harbor.cfg的目录下执行./install.sh,Harbor服务就会根据当期目录下的docker-compose.yml开始下载依赖的镜像,检测并按照顺序依次启动各服务。
输入等待下载成功后,我们就访问之前设置的ip,即登录http://192.168.3.24。
image.png

登录成功后我们便可以尽情发挥了。
image.png

首先是创建项目,可以设置公有的或者是私有的用于存放上传的镜像。在每个项目中,可以设置成员访问权限,一般可以添加成员角色,设为管理员,开发人员和访客。权限级别从高到低,访客只能拉取镜像而不能上传。
image.png

当选择用户管理的时候,我们可以创建用户。
image.png

若需要推送镜像,则可以根据每个项目里的提示进行相应操作。首先给本地的镜像打上tag,如右下图的格式。然后docker login 192.168.3.24,即使用docker登录harbor,输入你的用户名和密码。在登录成功后才能进行push操作。
image.png

至于如何pull镜像就更简单了,点击library/test就可以查看镜像的pull命令,即下图红框里的那个小方框,点击即可复制pull命令。直接在要下载镜像的机器上输入就OK了,我想这一定难不倒聪明的你。
image.png

接下来,我们将尝试在rancher上使用harbor仓库进行应用的部署。部署方法和之前的发过的文档一样。如下图,点击启动即可,容器端口要视被部署的应用而定。

在从harbor仓库中拉取镜像部署遇到过的问题:
这是我在部署集群时曾出现的问题,以下是尝试解决的方法之一,在跟rancher大牛的的沟通中逐渐排查问题,最终成功地从harbor仓库中拉取了镜像。


image.png

image.png

首先看pod 的event,表示节点的内存不足,调度不下去了。


image.png

但是,这样也算内存不足吗?虽然内存占用了许多,但还是有空间是可以部署负载的。
image.png

然后在集群的全局中,执行kubectl命令行。
image.png

输入kubectl top no,查看集群CPU和内存的使用率,发现也不是内存不足的问题。

image.png

这就让人感到奇怪了,直接部署一个标准的nginx是完全没问题的,但将标准nginx推送到私有仓库再部署却不行。
在跟rancher大牛确认仓库权限是公开的之后,接下来执行命令
kubectl run nginx-test --image=xxxx/public/nginx-test:1
然后执行这条kubectl get po | grep nginx-test,如下图,显示拉取失败。
image.png

再执行kubectl describe po nginx-test-xxx-xxx,查看event,发现不能拉取该指定镜像。
image.png

image.png

直接去node节点中docker pull xxxx,连接被拒绝。
image.png

尝试修改docker daemon配置文件,我曾疑惑是否需要将 ["0.0.0.0/0"]改成本机ip,但对方说不需要,这是通配符,将下面这段命令在k8s里面的worker节点挨个走一遍。
cat << EOF > /etc/docker/daemon.json
{
"insecure-registries" : ["0.0.0.0/0"],
"registry-mirrors": ["https://4wmjwi37.mirror.aliyuncs.com"],
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
EOF
重启服务
sudo systemctl daemon-reload
sudo systemctl restart docker
sudo systemctl enable docker

输入sudo docker info,被大牛告知下图这个参数需要打开,但不是拉取不了镜像的主要问题,打开方式在官方文档里有教程。

image.png

image.png

最后输入kubectl get po | grep nginx-test,发现镜像已经处于Running的状态。
image.png

回到rancher ui,惊喜地发现负载已经部署成功了。
image.png

总结:这些奇怪的问题是集群创建及使用过程中的一些最佳实践以及参数调优等等做的不完备导致的。一般来说,社区用户难免会会遇到这样或那样的问题,所以文档要多读读。
当然,很多问题如果是订阅用户就可以避免掉,最开始集群创建的时候,一些主机参数调优集群配置等,都会结合我们诸多生产经验去优化,尽量从源头避免问题的发生节约我们宝贵的时间和精力。
https://www.cnblogs.com/huangjc/p/6420355.html(harbor使用:修改80端口)

你可能感兴趣的:(通过docker来搭建Harbor仓库的基本方法)