harbor的安装
为什么要整这个呢,因为我在学习k8s,但是需要一个自己的镜像仓库。于是,最开始想到的就是在本地直接部署一个,还比较安全、快速。
直接下载了官方的项目,运行脚本发现出了异常,这种异常我已经司空见惯了。我的电脑是M1
芯片的,ARM
架构的,很难和主流的x86
架构的芯片兼容。随意,很多的docker镜像也很难在我的mac上跑。
失败了很多次,我决定把我的腾讯云服务器摆上来,为此,我还停服了我运营很久的博客网站。
linux上的安装
需要的环境:docker
docker-compose
docker
我的已经安装了
(base) [root@apps]# docker version
Client:
Version: 1.13.1
API version: 1.26
Package version: docker-1.13.1-209.git7d71120.el7.centos.x86_64
Go version: go1.10.3
Git commit: 7d71120/1.13.1
Built: Wed Mar 2 15:25:43 2022
OS/Arch: linux/amd64
Server:
Version: 1.13.1
API version: 1.26 (minimum version 1.12)
Package version: docker-1.13.1-209.git7d71120.el7.centos.x86_64
Go version: go1.10.3
Git commit: 7d71120/1.13.1
Built: Wed Mar 2 15:25:43 2022
OS/Arch: linux/amd64
Experimental: false
# yum list installed | grep docker
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
docker.x86_64 2:1.13.1-209.git7d71120.el7.centos
docker-client.x86_64 2:1.13.1-209.git7d71120.el7.centos
docker-common.x86_64 2:1.13.1-209.git7d71120.el7.centos
没安装的,我这里推荐一个大神写的脚本,实现一步安装
[root@root ~]# cat dockerInstall.sh
#!/bin/bash
Version="docker的版本号"
# 下载docker安装源
wget -P /etc/yum.repos.d/ https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装docker
yum -y install docker-ce-$Version || echo -e '\033[1;31m安装失败,请检查网络和yum源配置!\033[0m'
# 使用国内镜像加速
# 阿里云(需要登录账号分配地址)
# 网易云 https://vgunv6qp.mirror.aliyuncs.com
# 腾讯云 https://mirror.ccs.tencentyun.com
# 中科大 https://docker.mirrors.ustc.edu.cn
# docker中国 https://registry.docker-cn.com
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://mirror.ccs.tencentyun.com",
"https://docker.mirrors.ustc.edu.cn",
"https://registry.docker-cn.com"
]
}
EOF
# 重新加载配置并启动docker
systemctl daemon-reload
systemctl enable --now docker
docker version && echo -e "\033[1;32m${Version}安装成功!\033[0m" || echo -e '\033[1;31m安装失败!\033[0m'
docker-compose的安装
因为我的docker版本是1.13.1
我的docker-compose的版本得慎重了,恰好看到了官方代码库 中和1.13.1
对应的1.13.0
的版本,于是开始安装。
wget https://github.com/docker/compose/releases/download/1.13.0/docker-compose-Linux-x86_64
mv docker-compose-Linux-x86_64 /usr/bin/docker-compose
chmod +x /usr/bin/docker-compose
ll /usr/bin/docker-compose
docker-compose -v
harbor的安装
官方的代码地址上找,我比较谨慎,依旧是找了版本相近的。
wget https://github.com/goharbor/harbor/releases/download/v2.0.0/harbor-online-installer-v2.0.0.tgz
tar xvf harbor-online-installer-v2.0.0.tgz -C /usr/local/
cd /usr/local/harbor
cp harbor.yml.tmpl harbor.yml
# 改一下harbor的端口、密码就可以了
vim harbor.yml
# harbor的数据文件
mkdir -p /harbor/data
bash install.sh
注意harbor.yml
的hostname
配置:
# The IP address or hostname to access admin UI and registry service.
# DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.
hostname: 你外网可以访问的ip
真的巨坑,我本地的docker去连接的时候,直接各种乱七八糟的错误,都因为
hostname
配置错了。
报错了,版本的问题,该来的还是来了。直接删除全部的镜像、容器、正在跑的服务。
重装docker
话不多说,我直接上脚本。
docker stop $(docker ps | grep '0.0.0.0' | awk '{print $1}')
docker rm $(docker ps -a | grep 'ago' | awk '{print $1}')
docker rmi $(docker images | grep 'ago' | awk '{print $3}')
从此,docker的世界安静了。我要卸载升级高版本的了。
yum remove docker docker-common docker-selinux docker-engine -y
wget -P /etc/yum.repos.d/ https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum list docker-ce --showduplicates | sort -r
版本的排序,让我看的眼花缭乱。
最终选择了这个版本的docker-ce-18.06.0.ce
。
yum install -y docker-ce-18.06.0.ce
这下总可以了吧,运行install.sh
的脚本,还出错!
那这样,我就选docker-compose
的1.20.0
的版本安装吧。
wget https://github.com/docker/compose/releases/download/1.20.0/docker-compose-Linux-x86_64
mv docker-compose-Linux-x86_64 /usr/bin/docker-compose
chmod +x /usr/bin/docker-compose
ll /usr/bin/docker-compose
docker-compose -v
安装完了,总算可以了吧,再次install.sh
。
# 启动docker
systemctl start docker
# 检查一下docker是否启动
docker ps
docker启动了,那就继续执行脚本吧。
此时,我的docker
启动了这么多的容器:
浏览器访问,账号密码:admin/你配置的。进来了之后就是这样的:
所以,版本对应关系
Docker | Docker-compse | Harbor |
---|---|---|
docker-ce-18.06.0.ce | 1.20.0 | 2.0.0 |
至此,我的harbor被我折腾出来了。下一步:开始整我自己的镜像仓储。
使用
到现在为止,harbor的安装成功了,应该如何使用呢?我们继续。
本地的docker desktop for mac
这样配置:
docker login ip
按照提示输入你的用户名、密码就可以实现认证了。成功了的是这样的:
关于harbor的使用,我会后期继续讲解的,篇幅原因,这期先这样啦。