本机环境
centos7.2
docker 1.12.3
docker-compose 1.8.1
一使用http认证方式
1.编辑/lib/systemd/system/docker.service ,在ExecStart处增加 --insecure-registry=192.168.125.154,保存重启docker deamon
2.修改harbor.cfg中的ui_url_protocol = http
3.编译安装harbor
./prepare && ./install.sh
4.推送镜像到私服中
镜像改名为:192.168.125.154/library/nginx:1.9
登录docker longin 192.168.125.154
docker push 192.168.125.154/library/nginx:1.9
注意:如果--insecure-registry配置带5000端口的话,docker longin 和镜像名都要带上5000端口才可以。
由于我们配置认证服务使用的是http,Docker认为是不安全的,另外要使用我们部署的镜像仓库,还需要配置本地的docker配置文件呢,如上。
二使用https方式
1.自签发证书获取证书
openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 365 -out ca.crt
2.拷贝ca.crt和ca.key到/root/cert下(经验证在其他机器上只需要将ca.cert的内容追加到其系统证书下即可。)
并且需要在docker client端设置如下:(如果是企业级证书,下面的操作取决于证书的CA是不是在操作系统的truststore里)
.cat ca.crt >> /etc/pki/tls/certs/ca-bundle.crt (追加到系统证书,针对centos)
.在/etc/docker/certs.d下创建主机名目录,并且将ca.crt拷贝进来。
如果要通过域名来访问的话,需要配置下common/config/nginx/nginx.conf里的 server_name
3.配置和安装
cp 192.168.125.154.crt /root/cert/
cp 192.168.125.154.key /root/cert/
编辑harbor.cfg
./prepare &&./install.sh#set hostname hostname = reg.yourdomain.com #set ui_url_protocol ui_url_protocol = https ...... #The path of cert and key files for nginx, they are applied only the protocol is set to https ssl_cert = /root/cert/yourdomain.com.crt ssl_cert_key = /root/cert/yourdomain.com.key
三.配置harbor作为mirror registy
Mirror是Docker Registry的一种特殊类型,它起到了类似代理服务器的缓存角色,在用户和Docker Hub之间做Image的缓存
其基本工作原理是,当用户pull一个镜像时,若镜像在mirror 服务器存在,则直接从mirror服务器拉取,否则若不存在该镜像,则由mirror server自动代理往dockerhub(可配置)中拉取镜像,并缓存到mirror服务器中,当客户再次拉取这个镜像时,直接从mirror server中拉取,不需要再次从dockerhub中拉取。
具体配置:
在运行./prepare之前修改config/registry/config.yml文件,追加一下配置:
proxy:
remoteurl: https://registry-1.docker.io
username: [username]
password: [password]
然后重新启动harbor服务。
#注意,如果需要访问私有仓库的话则要填写dockerhub的用户名和密码
另外不要执行./prepare,否则会覆盖修改的配置。
docker-compose stop &&docker-compose rm -f && docker-compose up -d
除了设置harbor(registy),还需要配置本地docker配置文件,增加 --registry-mirror=http://ip
四.配置LDAP认证
harbor支持两种认证方式,默认为本地存储,即账号信息存储在mysql下,另外一种认证方式就是LDAP,只需要修改配置文件即可,需要提供LDAP URL以及ldap basedn参数,并设置auth_mode为ldap_auth。
具体实现:
修改harbor.cfg文件关于ldap配置项,如下:
auth_mode = ldap_auth
ldap_url = ldap://10.254.100.2
ldap_basedn = uid=%s,dc=ustack,dc=com
然后重新编译部署harbor:
./prepare && ./install.sh
五.删除镜像
需要三部:
1.从UI界面删除
2. 。docker-compose stop
。docker run -it --name gc --rm --volumes-from registry registry:2.5.0 garbage-collect /etc/registry/config.yml
如果是想预览下删除的镜像(不删除)可加--dry-run参数
docker run -it --name gc --rm --volumes-from registry registry:2.5.0 garbage-collect --dry-run /etc/registry/config.yml
3.。docker-compose start
六. 为Harbor配置后端存储
默认情况下,Docker镜像存储在本地文件系统中。在生产环境钟可能会考虑使用其他的存储,如azure,S3,oss,OpenStack Swift,Ceph,etc等,那么,就需要修改common/templates/registry/config.yml文件:
storage:
swift:
username: admin
password: ADMIN_PASS
authurl: http://keystone_addr:35357/v3
tenant: admin
domain: default
region: regionOne
container: docker_images
其中username,password,authurl和container是必须的, comtainer表示swift中的容器。
运行./prepare脚本更新配置,完成配置后,就可以使用docker-compose快速部署Harbor了。
# docker-compose up -d
最后提示如下信息,便表示安装成功了。
验证:
export ST_USER=test:1111 # 即 <account>:<user> 生产环境 二者相同
swift stat # 查看账户信息
swift list # 显示容器列表
swift post img # 创建容器
swift delete img # 删除容器
swift list img # 显示容器img中对象列表
swift upload img logo.png # 将本地当前目录下的logo.png上传到img容器
swift delete img logo.png # 删除容器img中的对象
swift download img # 下载img容器所有文件到本地
七.高可用架构