企业级镜像仓库Harbor
Harbor私有仓库安装
1.安装Docker和Docker Compose
Docker CE 支持 64 位版本 CentOS 7,并且要求内核版本不低于 3.10, CentOS 7 满足最低内核的要求,所以我们在CentOS 7安装Docker。
1.1.卸载(可选)
如果之前安装过旧版本的Docker,可以使用下面命令卸载:
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine \
docker-ce
\ : 表示该行的命令没有结束,下面一行的内容是一体的。
1.2.安装docker
首先需要大家虚拟机联网,安装yum工具
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2 --skip-broken
然后更新本地镜像源:
# 设置docker镜像源
yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
yum makecache fast
然后输入命令:
yum install -y docker-ce
docker-ce为社区免费版本。稍等片刻,docker即可安装成功。
1.3.启动docker
Docker应用需要用到各种端口,逐一去修改防火墙设置。非常麻烦,因此建议大家直接关闭防火墙!
启动docker前,一定要关闭防火墙后!!
# 关闭
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld
通过命令启动docker:
systemctl start docker # 启动docker服务
systemctl stop docker # 停止docker服务
systemctl restart docker # 重启docker服务
然后输入命令,可以查看docker版本:
docker -v
如图:
1.4.配置镜像加速
docker官方镜像仓库网速较差,我们需要设置国内镜像服务:
参考阿里云的镜像加速文档:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
配置镜像加速器
针对Docker客户端版本大于 1.10.0 的用户,您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://do1m38nl.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
2.CentOS7安装DockerCompose
2.0.DockerCompose简介
Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
2.1.下载
Linux下需要通过命令下载:
# 安装
curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
如果下载速度较慢,或者下载失败,可以先自行在网上下载好docker-compose文件,然后上传到/usr/local/bin/
目录也可以。
docker-compose下载网址:Releases · docker/compose
2.2.修改docker-compose文件权限
修改文件权限:
# 修改权限
chmod +x /usr/local/bin/docker-compose
# 查看版本号
docker-compose -v
Docker Compose version v2.17.2
3、安装Harbor私有仓库
3.1.下载并修改配置文件
Harbor安装包下载网址:Releases · goharbor/harbor (github.com)
tar zxvf harbor-offline-installer-v2.0.0.tgz
cd harbor
cp harbor.yml.tmpl harbor.yml
vi harbor.yml
# 修改主机名:hostname: reg.ctnrs.com
# 先注释https相关配置
https:
# https port for harbor, default is 443
port: 443
# The path of cert and key files for nginx
certificate: /your/certificate/path
private_key: /your/private/key/path
3.2.安装
./prepare
./install.sh
# 查看容器是否全部启动
docker-compose ps
浏览器登录IP地址或域名进行访问
账号:admin 默认密码:Harbor12345
3.3.docker连接私有仓库
docker login 私有仓库域名/IP地址
Error response from daemon: Get "https://192.168.200.101/v2/": dial tcp 192.168.200.101:443: connect: connection refused
发现出错,因为docker默认是使用https协议
所以我们需要将docker对私有仓库的ip、域名变得可信任:
vi /etc/docker/daemon.json
#逗号一定不能少,JSON格式
"registry-mirrors": ["http://hub-mirror.c.163.com", "https://docker.mirrors.ustc.edu.cn"],
"insecure-registries": ["192.168.200.101"]
systemctl daemon-reload
systemctl restart docker
docker info # 增加了一行参数
Insecure Registries:
192.168.200.101
127.0.0.0/8
docker login 私有仓库域名/IP地址
3.4.本地镜像推送到仓库
修改镜像 tag:
docker tag 本地镜像名 私有仓库IP地址、域名/library/nginx:1.19
推送镜像到 Harbor:
> docker push 11.8.36.21:8888/library/nginx:1.19
The push refers to a repository [11.8.36.21:8888/library/nginx]
f0f30197ccf9: Pushed
eeb14ff930d4: Pushed
c9732df61184: Pushed
4b8db2d7f35a: Pushed
431f409d4c5a: Pushed
02c055ef67f5: Pushed
1.19: digest: sha256:eba373a0620f68ffdc3f217041ad25ef084475b8feb35b992574cd83698e9e3c size: 15
4、Harbor 部署HTTPS
4.1.生成SSL证书
下载生成证书工具:
# 注意: 也可以使用openssl工具
wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64
chmod +x cfssl*
mv cfssl_linux-amd64 /usr/bin/cfssl
mv cfssljson_linux-amd64 /usr/bin/cfssljson
mv cfssl-certinfo_linux-amd64 /usr/bin/cfssl-certinfo
cat > ca-config.json <<EOF # 创建两个ca证书颁发机构,json文件
{
"signing": {
"default": {
"expiry": "87600h"
},
"profiles": {
"kubernetes": {
"expiry": "87600h",
"usages": [
"signing",
"key encipherment",
"server auth",
"client auth"
]
}
}
}
}
EOF
cat > ca-csr.json <<EOF
{
"CN": "kubernetes",
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"L": "Beijing",
"ST": "Beijing"
}
]
}
EOF
# 初始化ca,执行ca-csr.json文件,生成ca机构
cfssl gencert -initca ca-csr.json | cfssljson -bare ca -
cat > reg.ctnrs.com-csr.json <<EOF # 创建服务端证书的请求文件
{
"CN": "reg.ctnrs.com", # 域名
"hosts": [],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"L": "BeiJing",
"ST": "BeiJing"
}
]
}
EOF
# 命令最后的参数是与Harbor指定的域名一致
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes reg.ctnrs.com-csr.json | cfssljson -bare reg.ctnrs.com
**4.2.Harbor启用HTTPS **
# vi harbor.yml
https:
port: 443
certificate: /root/harbor/ssl/reg.ctnrs.com.pem private_key: /root/harbor/ssl/reg.ctnrs.com-key.pem
3、重新配置并部署Harbor
./prepare
docker-compose down
docker-compose up –d
4、将数字证书复制到Docker主机
mkdir /etc/docker/certs.d/reg.ctnrs.com
cp reg.ctnrs.com.pem /etc/docker/certs.d/reg.ctnrs.com/reg.ctnrs.com.crt
5、Harbor主从复制
在主节点中创建连接备份节点:
6、Harbor运维
容器 | 功能 |
---|---|
harbor-core | 配置管理中心 |
harbor-db | PG数据库 |
harbor-jobservice | 负责镜像复制 |
harbor-log | 记录操作日志 |
harbor-portal | Web管理页面和API |
nginx | 前端代理,负责前端页面和镜像上传/下载转发 |
redis | 会话 |
registryctl | 镜像存储 |
容器数据持久化目录:/data
日志文件目录:/var/log/harbor
仓库高可用:① 主从备份 ② 备份数据库 /data
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!