Harbor是用于存储和分发docker镜像的企业级Registry服务器;
软硬件前置条件:官方连接
安装docker
- 方法一
#下载安装docker,需要版本Version 17.06.0-ce+或更高
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
- 方法二
#删除掉旧的docker
$ yum remove docker docker-*
$ yum install -y yum-utils device-mapper-persistent-data lvm2
$ yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
$ yum-config-manager --enable docker-ce-edge
$ yum install -y docker-ce-18.09.0-3.el7.x86_64
$ systemctl start docker
$ systemctl enable docker
- 安装docker-compose,Version 1.18.0或更高
docker-compose官方文档地址:https://docs.docker.com/compose。 从 Github 上下载它的二进制包来使用,最新发行的版本地址:https://github.com/docker/compose/releases。 运行以下命令下载 Docker Compose 的当前稳定版本:
#yum install -y docker-compose
#sudo apt install docker-compose
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
#https://github.com/docker/compose/releases/download/1.25.0-rc4/docker-compose-Linux-x86_64
要安装其他版本的 Compose,请替换 1.24.1。将可执行权限应用于二进制文件:
$ sudo chmod +x /usr/local/bin/docker-compose
创建软链:
$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
测试是否安装成功: 注意: 对于 alpine,需要以下依赖包: py-pip,python-dev,libffi-dev,openssl-dev,gcc,libc-dev,和 make。
$ sudo docker-compose version
2.下载配置harbor源码
- 安装harbor官方文档
- harbor源码github地址
wget https://github.com/goharbor/harbor/archive/v2.1.0-rc1.tar.gz
tar -xvf v2.1.0-rc1.tar.gz
mv harbor-2.1.0-rc1 harbor
cd harbor/make
cp harbor.yml.tmpl harbor.yml
##这里根据实际情况,编译harbor.yml
vi harbor.yml
3.配置harbor.yml文件
hostname: 192.168.110.100
http:
port: 80
database:
password: root123
harbor_admin_password: Harbor12345 #默认
log:
location: /data/harbor/logs
data_volume: /data/harbor/
- hostname:配置主机名称,不可以设置127.0.0.1,localhost这样的主机名,可以是IP或者域名
- ui_url_protocol:指定使用HTTP协议还是HTTPS协议
- Email settings:邮箱设置,option配置,只在首次启动生效,可以登陆UI后修改
- harbor_admin_password:设置管理员的初始密码,只在第一次登录时- 使用
- auth_mode:用户认证模式,默认是db_auth,也可以使用ldap_auth验证。
- db_password:使用db需要指定连接数据库的密码
- self_registration:是否允许自行注册用户,默认是on,新版本可以在图形界面中修改。
- max_job_workers:最大工作数,默认是10个
- customize_crt:是否为token生成证书,默认为on
- ssl_cert:nginx cert与key文件的路径, 只有采用https协议是才有意义
- ssl_cert:nginx cert与key文件的路径, 只有采用https协议是才有意义
- secretkey_path:The path of secretkey storage
- admiral_url:Admiral’s url, comment this attribute, or set its value to NA when Harbor is standalone
- clair_db_password:未启用calir服务,但解压目录下的"./prepare"文件中要检查以下相关参数配置,不能注释,否则环境准备检查不能通过,报"ConfigParser.NoOptionError: No option u’clair_db_password’ in section: u’configuration’ “相关错误;或者在”./prepare"中注释相关检查与定义,但需要注意,文件中的关联太多,推荐修改"harbor.cfg"文件即可
- ldap_url:ladp相关设置,如未采用ldap认证,但解压目录下的"./prepare"文件中要检查以下相关参数配置,不能注释,否则环境准备检查不能通过,报"ConfigParser.NoOptionError: No option u’ldap_timeout’ in section: u’configuration’ “相关错误;或者在”./prepare"中注释相关检查与定义,但需要注意,文件中的关联太多,推荐修改"harbor.cfg"文件即可
- self_registration:默认开启自注册,off为关闭
- token_expiration:token有效时间,默认30minutes
- project_creation_restriction:创建项目权限控制,默认是"everyone"(所有人),可设置为"adminonly"(管理员)
- verify_remote_cert:与远程registry通信时是否采用验证ssl
4.执行安装harbor
#设置完harbor.yml可以安装
./install.sh
- 问题:ERROR: manifest for goharbor/harbor-log:v2.2.0-build.3927 not found。
如果遇到问题,ERROR: manifest for goharbor/harbor not found。是因为最新harbor版本的问题,需要修改install.sh文件。在87行进行如下修改,添加替换版本号。因为prepare脚本会重新生成docker-composer.yml文件,在其步骤之后之间替换最新版本harbor版本号。harbor最新版本号可以通过官方网站进行查询tag的版本。
./prepare $prepare_para
sed -i "s/v2.2.0-build.3927/v2.0.2/g" docker-compose.yml
5.测试harbor的Web界面
配置Nginx,然后登录IP:80 地址。安装好后是默认用户名和密码如下: user:admin password:Harbor12345
6.提交测试镜像
- http登录
如果采用http登录,需要修改docker配置。在/etc/sysconfig/ 没有docker这个配置文件的情况下创建文件添加:
#在daemon.json中添加以下参数
[root@localhost harbor]# cat /etc/docker/daemon.json
#harbor的docker login 失败为例
{
"insecure-registries": [
"harbor.cfg中name的域名或者ip"
]
}
- 镜像拉取和提交
$ docker pull alpine #拉取测试用容器
$ docker run -itd --name docker_name alpine
...
$ docker stop #修改容器后停止
$ docker commit -m "message" -a "author" docker_name repository_author/repository_name:V2 #提交容器,设置V2版本号
$ docker tag repository_author/repository_name:V2 192.168.110.100/library/repo_name:V3 #可以根据情况修改提交tag和名称专门用于上传提交镜像,其中192.168.110.100为本地ip或域名;library为harbor中已创建项目名称,如果没有则无法上传成功;
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.110.100/library/repo_name V3 deb7360bb5c4 36 minutes ago 5.57MB
repository_author/repository_name V2 deb7360bb5c4 36 minutes ago 5.57MB
$ docker login 192.168.110.100
#推送镜像到harbor
$ docker push 192.168.110.100/library/repo_name:V3