Harbor安装和简单使用

Harbor是用于存储和分发docker镜像的企业级Registry服务器;

1.准备前提条件

  • 软硬件前置条件:官方连接

  • 安装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源码

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


发表评论

邮箱地址不会被公开。 必填项已用*标注