harbor——docker企业级仓库安装配置实战

harbor——docker企业级仓库安装配置实战



harbor介绍

Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境内的Registry也是非常必要的。Harbor是由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能。

系统环境

系统版本:centos7.4

关闭firewalld和selinux

1、docker-ce的安装

1、安装一些必要的系统工具

yum install -y yum-utils device-mapper-persistent-data lvm2

2、添加docker镜像源

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3、安装 Docker-CE(建议指定安装版本)

yum -y install docker-ce

指定版本命令:

yum install -y docker-ce-17.06.0.ce-1.el7.centos

注:使用“yum list docker-ce.x86_64 --showduplicates | sort -r”可以查看所有版本,如下:

harbor——docker企业级仓库安装配置实战



安装特定版本使用命令“yum -y install docker-ce-[VERSION]”,如下图所示:

harbor——docker企业级仓库安装配置实战



4、开启Docker服务

systemctl start docker.server

注:命令“systemctl start docker.server”在本次搭建中报错,换成“systemctl start docker”命令即可!

2 docker-compose的安装

方法一(推荐使用):

curl -L https://github.com/docker/compose/releases/download/1.18.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

docker-compose version

注:如果出现该错误“curl: (35) Peer reports incompatible or unsupported protocol version.”

harbor——docker企业级仓库安装配置实战



则需要安装插件:

yum update -y nss curl libcurl

再次运行命令,问题解决!

方法二:

CentOS:

yum install epel-release -y

yum install python-pip -y

Ubuntu:

apt-get install python-pip -y

# 通用命令

pip --version

pip install --upgrade pip

pip install -U -i https://pypi.tuna.tsinghua.edu.cn/simple docker-compose

docker-compose version

3 Harbor私有仓库的安装

3.1 下载Harbor安装文件

从 github harbor 官网 release 页面下载指定版本的安装包。

1、在线安装包

wget https://github.com/vmware/harbor/releases/download/v1.1.2/harbor-online-installer-v1.1.2.tgz

tar xvf harbor-online-installer-v1.1.2.tgz

2、离线安装包

wget https://github.com/vmware/harbor/releases/download/v1.1.2/harbor-offline-installer-v1.1.2.tgz

tar xvf harbor-offline-installer-v1.1.2.tgz

注:推荐使用第二种,因为第一种在线安装可能由于官网源的网络波动导致安装失败。

3.2 配置Harbor

1、进入harbor的根目录

mv /home/tools/harbor/ /usr/local/

cd /usr/local/harbor

2、配置harbor.cfg文件

vim harbor.cfg

修改如下部分(下面2-5行全部注释掉,根据实践2-5行不能注释掉)

hostname = 192.168.139.99

#ldap_url = ldaps://ldap.mydomain.com

#ldap_uid = uid

#ldap_scope = 3

#ldap_timeout = 5

project_creation_restriction = adminonly

参数说明:

hostname = harbor.51cto.wang (前端域名,也可以是IP,不能是localhost/127.0.0.1)

ui_url_protocol = https (使用默认的http会导致docker login登录不了,且不安全)

ssl_cert = /data/harbor/cert/server.crt (证书存放目录及文件名)

ssl_cert_key = /data/harbor/cert/server.key

auth_mode = db_auth (本地数据库认证)

harbor_admin_password = Harbor12345 (admin用户的密码)

project_creation_restriction = adminonly (仅管理员可以创建项目,everyone为所有人可以创建项目)

self_registration = on (开启自注册功能)

3、创建证书

mkdir -p /data/harbor/cert && cd /data/harbor/cert

openssl req -x509 -days 3650 -nodes -newkey rsa:2048 -keyout /data/harbor/cert/server.key -out /data/harbor/cert/server.crt

(只填Common Name这一项,其他都默认回车):k8s-master

3.3 生成配置文件并启动容器

1、运行harbor根目录下的install.sh脚本,harbor服务就会根据当期目录下的docker-compose.yml开始下载依赖的镜像,检测并按照顺序依次启动,如下图:

./install.sh

harbor——docker企业级仓库安装配置实战



[Step 0]: checking installation environment ...

Note: docker version: 18.03.1

Note: docker-compose version: 1.18.0

[Step 1]: loading Harbor images ...

[Step 2]: preparing environment ...

[Step 3]: checking existing instance of Harbor ...

Now you should be able to visit the admin portal at http://192.168.139.99.

For more details, please visit https://github.com/vmware/harbor .

注:“docker version”和“docker-compose version”的主版本必须一致,否则会报错,[Step 2]: preparing environment ...这一步无法进行!!!

2、查看harbor依赖的镜像及启动服务如下:

docker images

harbor——docker企业级仓库安装配置实战



3、执行docker-compose ps

docker-compose ps

注:执行该命令时候出现几次报错,信息如下:

harbor——docker企业级仓库安装配置实战



harbor——docker企业级仓库安装配置实战



解决办法:

mkdir -p /usr/local/harbor/common/config/ui/

mkdir -p /usr/local/harbor/common/config/db

mkdir -p /usr/local/harbor/common/config/jobservice

cp /usr/local/harbor/common/templates/adminserver/env /usr/local/harbor/common/config/ui/

cp /usr/local/harbor/common/templates/adminserver/env /usr/local/harbor/common/config/db

cp /usr/local/harbor/common/templates/adminserver/env /usr/local/harbor/common/config/jobservice

还有一个需要注意的地方:

[root@k8s-master bin]# docker-compose ps

ERROR:

Can't find a suitable configuration file in this directory or any

parent. Are you in the right directory?

Supported filenames: docker-compose.yml, docker-compose.yaml

[root@k8s-master bin]# docker-compose up

ERROR:

Can't find a suitable configuration file in this directory or any

parent. Are you in the right directory?

Supported filenames: docker-compose.yml, docker-compose.yaml

这个问题主要是docker-compose ps(up、stop、rm)等命令需要在包含*.yaml这类的文件夹下执行!!!

3.4 访问harbor仓库的web界面

1、访问web界面http:// http://192.168.139.99

用户名:admin

密码:123 #之前修改过了

harbor——docker企业级仓库安装配置实战



2、登陆web界面

harbor——docker企业级仓库安装配置实战



4 客户端连接镜像仓库配置过程

4.1 客户端连接仓库

1、在客户端输入

docker login 192.168.139.99

出现如下报错:

[root@k8s-node-1 sysconfig]# docker login 192.168.139.99

Username: admin

Password:

Error response from daemon: Get https://192.168.139.99/v2/: dial tcp 192.168.139.99:443: getsockopt: connection refused

harbor——docker企业级仓库安装配置实战



这是因为docker1.3.2版本开始默认docker registry使用的是https,我们设置Harbor默认http方式,所以当执行用docker login、pull、push等命令操作非https的docker regsitry的时就会报错。解决办法:

1)如果系统是MacOS,则可以点击“Preference”里面的“Advanced”在“Insecure Registry”里加上docker.bksx.com,重启Docker客户端就可以了。

2)如果系统是Ubuntu,则修改配置文件/lib/systemd/system/docker.service,修改[Service]下ExecStart参数,增加– insecure-registry docker.bksx.com。

3)如果系统是Centos,可以修改配置/etc/sysconfig/docker,将OPTIONS增加 –insecure-registry docker.bksx.com(本次实践使用的系统为centos,所以使用这个解决办法!)。

如果是新版本的docker在/etc/sysconfig/ 没有docker这个配置文件的情况下。

在daemon.json中添加以下参数

[root@localhost harbor]# cat /etc/docker/daemon.json

{

"insecure-registries": [

"docker.bksx.com"

]

}

注:如果没有“daemon.json”这个文件,创建一个即可!

2、重启docker

systemctl restart docker

至此harbor的已经全部搭建完毕,大家可是上传镜像到仓库试试了!需要说明的是,文中有一些报错信息在实践中有可能会遇到,有可能一次通过(这样最好),有什么问题在评论处留言。欢迎大家转发、点赞或是收藏,谢谢大家支持!

打开APP阅读更多精彩内容