第一次使用这个的时候是刚进公司处理的第一个任务的时候,发现 Harbor 就是一个用于存储和分发 Docker 镜像的企业级Registry 服务器。python
网上找到一个 Harbor 的架构图:mysql
Harbor 是 VMware 公司开源的企业级 DockerRegistry 项目,项目地址为 https://github.com/vmware/harbor。其目标是帮助用户迅速搭建一个企业级的 Docker registry 服务。它以 Docker 公司开源的 registry 为基础,提供了管理UI,基于角色的访问控制(Role Based Access Control),AD/LDAP集成、以及审计日志(Auditlogging) 等企业用户需求的功能,同时还原生支持中文。Harbor 的每一个组件都是以 Docker 容器的形式构建的,使用 Docker Compose 来对它进行部署。nginx
一、本身在腾讯云买的服务器(CentOS7.3)git
二、Docker 版本:17.05.0-cegithub
三、Docker-compose:1.17.1web
四、Harbor:1.1.2sql
由于系统是 CentOS 7.3 ,内核啥的都已是 3.10,因此不用担忧内核升级的问题,一些操做啥的在 7.x 上操做也很方便。docker
yum update //系统版本更新 vim /etc/yum.repos.d/docker.repo //添加如下内容 [dockerrepo] name=Docker Repository baseurl=https://yum.dockerproject.org/repo/main/centos/7/ enabled=1 gpgcheck=1 gpgkey=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.service systemctl start docker //启动docker守护进程 docker info //查看docker运行状况 docker -v //查看版本信息
修改 Docker 配置文件 /etc/default/docker 以下:shell
DOCKER_OPTS="--registry-mirror=http://aad0405c.m.daocloud.io" //换成国内的镜像加速源,否则拉取镜像简直龟速,不想在吐槽了
使用 service docker restart
重启 Docker 服务便可。数据库
或者用官方提供的方式:
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://ef017c13.m.daocloud.io
若是是想直接命令安装也行,
下载指定版本的docker-compose sudo 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/compo...
这种须要经过 Python 的 pip 安装
wget --no-check-certificate https://pypi.python.org/packages/source/s/setuptools/setuptools-1.4.2.tar.gz tar -vxf setuptools-1.4.2.tar.gz cd setuptools-1.4.2 python2.7 setup.py install //由于服务器自带 Python 2.7 easy_install-2.7 pip
pip install docker-compose docker-compose --version //测试安装是否成功
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 的配置文件。
## Configuration file of Harbor # hostname设置访问地址,可使用ip、域名,不能够设置为127.0.0.1或localhost hostname = 115.159.227.249 #这里我先配置个人服务器IP地址 # 访问协议,默认是http,也能够设置https,若是设置https,则nginx ssl须要设置on ui_url_protocol = http # mysql数据库root用户默认密码root123,实际使用时修改下 db_password = root123 #Maximum number of job workers in job service max_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 https ssl_cert = /data/cert/server.crt ssl_cert_key = /data/cert/server.key #The path of secretkey storage secretkey_path = /data #Admiral's url, comment this attribute, or set its value to NA when Harbor is standalone admiral_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.com email_server_port = 25 email_username = sample_admin@mydomain.com email_password = abc email_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登陆的密码,默认是Harbor12345 harbor_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/AD ldap_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 de pending on your LDAP/AD ldap_uid = uid #the scope to search for users, 1-LDAP_SCOPE_BASE, 2-LDAP_SCOPE_ONELEVEL, 3-LDAP_SCOPE_SUBTREE ldap_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,默认密码(或已修改密码)登陆系统。
咱们能够看到系统各个模块以下:
系统管理
其余设置
注意:非系统管理员用户登陆,只能看到有权限的项目和日志,其余模块不可见。
咱们要尝试下能不能把本身 Docker 里面的镜像 push 到 Harbor 的 library 里来(默认这个 library 项目是公开的,全部人均可以有读的权限,都不须要 docker login 进来,就能够拉取里面的镜像)。
注意:
为了后面留坑,我这里先 在本身的 docker.service 中添加仓库:(这是个坑,建议你先按照我说的作,否则下面可能会一直登陆不上)
vim /usr/lib/systemd/system/docker.service 里面的这行修改成:(其实就是添加 --insecure-registry 115.159.227.249 ) ExecStart=/usr/bin/dockerd --insecure-registry 115.159.227.249
添加完了后从新启动 docker:
systemctl daemon-reload && systemctl enable docker && systemctl start docker
启动 docker 服务:
service docker start
登陆:(为了测试下可否登陆成功)
admin登陆 $ docker login 115.159.227.249 Username: admin Password: Login Succeeded
打 tag 并 push
docker tag ubuntu:15.10 115.159.227.249/library/ubuntu:15.10 //给个人镜像打个 tag docker push 115.159.227.249/library/ubuntu The push refers to a repository [115.159.227.249/library/ubuntu] 98d59071f692: Pushed af288f00b8a7: Pushed 4b955941a4d0: Pushed f121afdbbd5d: Pushed 15.10: digest: sha256:ec89c4a90f45f5e103860191890f48d8379e0504a2881ff706aef0768dc0321b size: 1150
上传完毕后,登陆Web Harbor,选择项目 library,就能够看到我刚 push 的镜像了。
同理,你也能够测试下从 Harbor pull 镜像到你的 Docker 中去,这里就不继续演示了。
转载请注明地址为:http://www.54tianzhisheng.cn/...