搭建docker私有仓库harbor
这里先推荐几篇博客,这是我开始搭建之前先找的文章,觉得不错,但是大佬们用的版本都比较旧,我换成了比较新的版本,旧的和新的配置文件有些不同,以下是我的搭建过程,如有错误和不足,还请指正,共同进步
https://www.cnblogs.com/kevingrace/p/6547616.html
https://www.cnblogs.com/pangguoping/p/7650014.html
其中一篇博客中提到的误区,我之前还真的理解错了:
Harbor的误区
误区一: Harbor是负责存储容器镜像的 (Harbor是镜像仓库,那么它就应当是存储镜像的)
其实关于镜像的存储,Harbor使用的是官方的docker registry服务去完成,至于registry是用本地存储或者s3都是可以的,Harbor的功能是在此之上提供用户权限管理、镜像复制等功能,提高使用的registry的效率。
误区二:Harbor镜像复制是存储直接复制 (镜像的复制,很多人以为应该是镜像分层文件的直接拷贝)
其实Harbor镜像复制采用了一个更加通用、高屋建瓴的做法,通过docker registry 的API去拷贝,这不是省事,这种做法屏蔽了繁琐的底层文件操作、不仅可以利用现有docker registry功能不必重复造轮子,而且可以解决冲突和一致性的问题。
一、安装依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
二、配置docker安装仓库
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
三、安装dockerCE
yum install docker-ce -y 启动docker systemctl start docker
如果需要卸载docker-ce,操作如下:
yum remove docker-ce 卸载后images,containers,volumes,configuration files 是不能自动删除的,为了删除all images,containers,and volumes,请执行如下命令: rm -rf /var/lib/docker
四、安装docker-compose
注意安装版本,下面的版本可以改的
curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compos
赋予docker-compose可执行权限
chmod +x /usr/local/bin/docker-compose
根据自己的情况决定是否安装命令补全功能
yum install bash-completion
卸载docker-compose
rm /usr/local/bin/docker-compose
五、安装harbor
wget https://github.com/goharbor/harbor/releases/download/v1.10.1/harbor-online-installer-v1.10.1.tgz tar -xvf harbor-online-installer-v1.10.1.tgz
修改配置文件
1 cd harbor 2 vim harbor.yml 3 hostname: xxx.xxx.xxx.xxx ##访问UI和仓库的IP或者hostname 4 http: 5 port: 8000 ##UI访问端口,有些公网IP不能直接访问80端口,要改一下 6 harbor_admin_password: Harbor12345 ##登录harborUI的密码,建议更改 7 database: 8 password: root123 9 max_idle_conns: 50 10 max_open_conns: 100 11 data_volume: /data 12 clair: 13 updaters_interval: 12 14 jobservice: 15 max_job_workers: 10 16 notification: 17 webhook_job_max_retry: 10 18 chart: 19 absolute_url: disabled 20 log: 21 level: info 22 local: 23 rotate_count: 50 24 rotate_size: 200M 25 location: /var/log/harbor 26 _version: 1.10.0
执行安装脚本
sh install.sh
六、创建项目和仓库
用户名admin
密码Harbor123456
登录创建项目,创建用户,给项目添加用户
七、故障排查
docker客户端访问harbor会报错:
http: server gave HTTP response to HTTPS client
原因是docker在1.3版本之后的docker registry交互默认使用的是HTTPS,但是搭建私有镜像默认使用的是HTTP服务,所以我们要设置一下客户端用http去访问server:
需要添加信任,有两个方法:
1、/etc/docker/daemon.json中添加 { "insecure-registries":[“ip:port"] }
2、/usr/lib/systemd/system/docker.service中ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock 后面加--insecure-registry=ip:port
修改之后重启docker
我的docker版本是19.03.8,第一种方法不生效,用了第二种方法生效的
之后登录我们之前创建好的账户
docker login xxx.xxx.xxx.xxx:8000
之后就可以正常打标签上传镜像了