什么是 Harbor?
第一次利用这个的时候是刚进公司处理的第一个任务的时候,创造 Harbor 便是一个用于存储和分发 Docker 镜像的企业级Registry 做事器。
网上找到一个 Harbor 的架构图:
Harbor 是 VMware 公司开源的企业级 DockerRegistry 项目,项目地址为 https://github.com/vmware/harbor。其目标是帮助用户迅速搭建一个企业级的 Docker registry 做事。它以 Docker 公司开源的 registry 为根本,供应了管理UI,基于角色的访问掌握(Role Based Access Control),AD/LDAP集成、以及审计日志(Auditlogging) 等企业用户需求的功能,同时还原生支持中文。Harbor 的每个组件都因此 Docker 容器的形式构建的,利用 Docker Compose 来对它进行支配。
环境准备
1、自己在腾讯云买的做事器(CentOS7.3)
2、Docker 版本:17.05.0-ce
3、Docker-compose:1.17.1
4、Harbor:1.1.2
安装 Docker
由于系统是 CentOS 7.3 ,内核啥的都已经是 3.10,以是不用担心内核升级的问题,一些操作啥的在 7.x 上操作也很方便。
1234567891011121314151617181920212223
yum update //系统版本更新vim /etc/yum.repos.d/docker.repo //添加以下内容[dockerrepo]name=Docker Repositorybaseurl=https://yum.dockerproject.org/repo/main/centos/7/enabled=1gpgcheck=1gpgkey=https://yum.dockerproject.org/gpg//下面安装 Docker 引擎yum install docker-engine -y//安装docker引擎,此步也可作为更新docker版本的操作:先#systemctl stop docker 停滞docker做事,再#yum install docker-engine 更新docker版本systemctl enable docker.servicesystemctl start docker //启动docker守护进程docker info //查看docker运行情形docker -v//查看版本信息
修正 Docker 配置文件 /etc/default/docker 如下:
1
DOCKER_OPTS=\"大众--registry-mirror=http://aad0405c.m.daocloud.io\"大众//换成海内的镜像加速源,不然拉取镜像切实其实龟速,不想在吐槽了
利用 service docker restart
重启 Docker 做事即可。
或者用官方供应的办法:
1
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://ef017c13.m.daocloud.io
安装 Docker-compose
如果是想直接命令安装也行,
1234567891011121314
下载指定版本的docker-composesudo curl -L https://github.com/docker/compose/releases/download/1.17.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose对二进制文件赋可实行权限chmod +x /usr/local/bin/docker-compose测试下docker-compose是否安装成功docker-compose --version涌现如下docker-compose version 1.17.1, build 6d101fb
但是,这种方法切实其实龟速,幸好还有种方法,
见这里:https://docs.docker.com/compose/install/#install-compose
这种须要通过 Python 的 pip 安装
安装 PIP
123456789
wget --no-check-certificate https://pypi.python.org/packages/source/s/setuptools/setuptools-1.4.2.tar.gztar -vxf setuptools-1.4.2.tar.gzcd setuptools-1.4.2python2.7 setup.py install//由于做事器自带 Python 2.7easy_install-2.7 pip
安装 DOCKER COMPOSE
123
pip install docker-composedocker-compose --version//测试安装是否成功
安装 Harbor
12345
wget https://github.com/vmware/harbor/releases/download/v1.1.2/harbor-offline-installer-v1.1.2.tgz离线安装包,也是龟速,把这个下载链接用迅雷下载,速率却贼快,嘿嘿,然后再传到做事器上去,全体过程快很多!
tar -zxvf harbor-offline-installer-v1.1.2.tgz
解压缩之后,进入目录下会看到 harbor.cfg 文件,该文件便是 Harbor 的配置文件。
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
## Configuration file of Harbor# hostname设置访问地址,可以利用ip、域名,不可以设置为127.0.0.1或localhosthostname = 115.159.227.249 #这里我先配置我的做事器IP地址# 访问协议,默认是http,也可以设置https,如果设置https,则nginx ssl须要设置onui_url_protocol = http# mysql数据库root用户默认密码root123,实际利用时修正下db_password = root123#Maximum number of job workers in job servicemax_job_workers = 3#Determine whether or not to generate certificate for the registry's token.#If the value is on, the prepare script creates new root cert and private key#for generating token to access the registry. If the value is off the default key/cert will be used.#This flag also controls the creation of the notary signer's cert.customize_crt = on#The path of cert and key files for nginx, they are applied only the protocol is set to httpsssl_cert = /data/cert/server.crtssl_cert_key = /data/cert/server.key#The path of secretkey storagesecretkey_path = /data#Admiral's url, comment this attribute, or set its value to NA when Harbor is standaloneadmiral_url = NA#NOTES: The properties between BEGIN INITIAL PROPERTIES and END INITIAL PROPERTIES#only take effect in the first boot, the subsequent changes of these properties#should be performed on web ui#BEGIN INITIAL PROPERTIES#Email account settings for sending out password resetting emails.#Email server uses the given username and password to authenticate on TLS connections to host and act as identity.#Identity left blank to act as username.email_identity =email_server = smtp.mydomain.comemail_server_port = 25email_username = sample_admin@mydomain.comemail_password = abcemail_from = admin <sample_admin@mydomain.com>email_ssl = false##The initial password of Harbor admin, only works for the first time when Harbor starts.#It has no effect after the first launch of Harbor.# 启动Harbor后,管理员UI登录的密码,默认是Harbor12345harbor_admin_password = Harbor12345# 认证办法,这里支持多种认证办法,如LADP、本次存储、数据库认证。默认是db_auth,mysql数据库认证auth_mode = db_auth#The url for an ldap endpoint.ldap_url = ldaps://ldap.mydomain.com#A user's DN who has the permission to search the LDAP/AD server.#If your LDAP/AD server does not support anonymous search, you should configure this DN and ldap_search_pwd.#ldap_searchdn = uid=searchuser,ou=people,dc=mydomain,dc=com#the password of the ldap_searchdn#ldap_search_pwd = password#The base DN from which to look up a user in LDAP/ADldap_basedn = ou=people,dc=mydomain,dc=com#Search filter for LDAP/AD, make sure the syntax of the filter is correct.#ldap_filter = (objectClass=person)# The attribute used in a search to match a user, it could be uid, cn, email, sAMAccountName or other attributes depending on your LDAP/AD ldap_uid = uid#the scope to search for users, 1-LDAP_SCOPE_BASE, 2-LDAP_SCOPE_ONELEVEL, 3-LDAP_SCOPE_SUBTREEldap_scope = 3#Timeout (in seconds) when connecting to an LDAP Server. The default value (and most reasonable) is 5 seconds.ldap_timeout = 5# 是否开启自注册self_registration = on# Token有效韶光,默认30分钟token_expiration = 30# 用户创建项目权限掌握,默认是everyone(所有人),也可以设置为adminonly(只能管理员)project_creation_restriction = everyone#Determine whether the job service should verify the ssl cert when it connects to a remote registry.#Set this flag to off when the remote registry uses a self-signed or untrusted certificate.verify_remote_cert = on#END INITIAL PROPERTIES
启动 harbor,修正完配置文件后,在确当前目录实行./install.sh
,Harbor做事就会根据当期目录下的docker-compose.yml
开始下载依赖的镜像,检测并按照顺序依次启动各个做事。
启动完成后,我们访问刚设置的 hostname 即可,http://115.159.227.249/,默认是80端口,如果端口占用,我们可以去修正docker-compose.yml文件中,对应做事的端口映射。
登录 Web Harbor , 输入用户名 admin,默认密码(或已修正密码)登录系统。
我们可以看到系统各个模块如下:
项目:新增/删除项目,查看镜像仓库,给项目添加成员、查看操作日志、复制项目等
日志:仓库各个镜像create、push、pull等操作日志
系统管理
用户管理:新增/删除用户、设置管理员等
复制管理:新增/删除从库目标、新建/删除/启停复制规则等
配置管理:认证模式、复制、邮箱设置、系统设置等
其他设置
用户设置:修正用户名、邮箱、名称信息
修正密码:修正用户密码
把稳:非系统管理员用户登录,只能看到有权限的项目和日志,其他模块不可见。
我们要考试测验下能不能把自己 Docker 里面的镜像 push 到 Harbor 的 library 里来(默认这个 library 项目是公开的,所有人都可以有读的权限,都不须要 docker login 进来,就可以拉取里面的镜像)。
把稳:
为了后面留坑,我这里先 在自己的 docker.service 中添加仓库:(这是个坑,建议你先按照我说的做,不然下面可能会一贯登录不上)
1234
vim /usr/lib/systemd/system/docker.service里面的这行修正为:(实在便是添加 --insecure-registry 115.159.227.249 )ExecStart=/usr/bin/dockerd --insecure-registry 115.159.227.249
添加完了后重新启动 docker:
1
systemctl daemon-reload && systemctl enable docker && systemctl start docker
启动 docker 做事:
1
service docker start
登录:(为了测试下能否登录成功)
12345
admin登录$ docker login 115.159.227.249Username: adminPassword:Login Succeeded
打 tag 并 push
12345678910
docker tag ubuntu:15.10 115.159.227.249/library/ubuntu:15.10//给我的镜像打个 tagdocker push 115.159.227.249/library/ubuntuThe push refers to a repository [115.159.227.249/library/ubuntu]98d59071f692: Pushedaf288f00b8a7: Pushed4b955941a4d0: Pushedf121afdbbd5d: Pushed15.10: digest: sha256:ec89c4a90f45f5e103860191890f48d8379e0504a2881ff706aef0768dc0321b size: 1150
上传完毕后,登录Web Harbor,选择项目 library,就可以看到我刚 push 的镜像了。
同理,你也可以测试下从 Harbor pull 镜像到你的 Docker 中去,这里就不连续演示了。
参考自:http://www.54tianzhisheng.cn/2017/11/26/Docker-harbor/