Docker之Harbor私服的搭建及使用
今天给大家带来Harbor环境的搭建,以及使用介绍
-
Harbor介绍:
Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境内的Registry
也是非常必要的。Harbor是由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、
镜像复制和中文支持等功能。
- 本机环境:
centos7
docker:Docker version 18.06.1-ce
docker-compose:docker-compose version 1.22.0
这里要说明一下,要使用Harbor,需要docker,和docker-compose
1.Docker 安装
# yum 包更新
[root@centos7 ~]# yum update
# 卸载旧版本 Docker
[root@centos7 ~]# yum remove docker docker-common docker-selinux docker-engine
# 安装软件包
[root@centos7 ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
# 添加 Docker yum源
[root@centos7 ~]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安装 Docker
[root@centos7 ~]# yum -y install docker-ce
# 启动 Docker
[root@centos7 ~]# systemctl start docker
# 查看 Docker 版本号
[root@centos7 ~]# docker --version
2.Docker Compose 安装
# 安装 epel-release
[root@centos7 ~]# yum install epel-release
# 安装 python-pip
[root@centos7 ~]# yum install -y python-pip
# 安装 docker-compose
[root@centos7 ~]# pip install docker-compose
# 安装 git
[root@centos7 ~]# yum install git
# 查看 docker-compose 版本号
[root@centos7 ~] docker-compose -version
- 到这里Harbor的环境已经搭建完成,现在开始安装Harbor吧
这里分为在线和离线的版本,我下载的是1.6.0在线的版本
- 下载下来之后解压缩,目录下会有harbor.conf,就是Harbor的配置文件了。
## Configuration file of Harbor
# hostname设置访问地址,可以使用ip、域名,不可以设置为127.0.0.1或localhost
hostname = 10.0.86.193
# 访问协议,默认是http,也可以设置https,如果设置https,则nginx ssl需要设置on
ui_url_protocol = http
# mysql数据库root用户默认密码root123,实际使用时修改下
db_password = root123
max_job_workers = 3
customize_crt = on
ssl_cert = /data/cert/server.crt
ssl_cert_key = /data/cert/server.key
secretkey_path = /data
admiral_url = NA
# 邮件设置,发送重置密码邮件时使用
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
# 启动Harbor后,管理员UI登录的密码,默认是Harbor12345
harbor_admin_password = Harbor12345
# 认证方式,这里支持多种认证方式,如LADP、本次存储、数据库认证。默认是db_auth,mysql数据库认证
auth_mode = db_auth
# LDAP认证时配置项
#ldap_url = ldaps://ldap.mydomain.com
#ldap_searchdn = uid=searchuser,ou=people,dc=mydomain,dc=com
#ldap_search_pwd = password
#ldap_basedn = ou=people,dc=mydomain,dc=com
#ldap_filter = (objectClass=person)
#ldap_uid = uid
#ldap_scope = 3
#ldap_timeout = 5
# 是否开启自注册
self_registration = on
# Token有效时间,默认30分钟
token_expiration = 30
# 用户创建项目权限控制,默认是everyone(所有人),也可以设置为adminonly(只能管理员)
project_creation_restriction = everyone
verify_remote_cert = on
- 配置Harbor
配置完成之后再当前目录下执行./prepare,再执行./install.sh。Harbor就回根据当前目录下的docker-compose.yml下载依赖的镜像 - 启动Harbor
安装完成之后,打开浏览器访问你上边配置的hostname属性,就能看到Harbor的界面了。
账号默认是admin,密码默认Harbor12345(就是你上班配置文件中配置的,如果没有改动的话就是这个)
这里还要在说一个问题
Harbor是搭建完成了,在我们上传项目的时候可能会出现一些问题
docker login 10.0.86.193
Username: admin
Password:
Error response from daemon: Get https://10.0.86.193/v1/users/: dial tcp 10.0.86.193:443: getsockopt: connection refused
在我们进行登录上传代码的时候,会报出这样的错误
这是因为docker1.3.2版本开始默认docker registry使用的是https,我们设置Harbor默认http方式,所以当执行用docker login、pull、push等命令操作非https的docker regsitry的时就会报错。
解决办法:
如果是在Harbor本机登录可以这样做如下解决
- 如果系统是MacOS,则可以点击“Preference”里面的“Advanced”在“Insecure
Registry”里加上10.0.86.193,重启Docker客户端就可以了。
- 如果系统是Ubuntu,则修改配置文件/lib/systemd/system/docker.service,修改[Service]下ExecStart参数,增加–insecure-registry
10.0.86.193。 - 如果系统是Centos7,可以在/etc/docker/daemon.json 加上如下内容(注意是json字符串)
{
"insecure-registries": [
"10.0.86.193"
]
}
打开docker-compose.yml添加如下内容,注意前边的空格
然后我们执行docker-compose stop
./install.sh
再次登录就OK了
[root@docker02appl]# docker login 10.0.86.193
Username(admin): admin
Password:
Login Succeeded
如果是远程登录的话,也会出现这个错误
-
查找Docker的服务文件:登录到已经安装Docker的服务器,输入 systemctl status docker查看Docker的service文件。
-
编辑docker.service文件:在ExecStart处添加 –insecure-registry 参数。
后边跟的是你Harbor的地址 -
重新加载service文件,重启docker服务。
systemctl daemon-reload
systemctl restart docker
再次登录:
docker login [ip地址或域名](Harbor地址,harbor.cfg文件中的hostname项)
//根据提示分别输入用户名和密码
**附上拉取和推送的命令:**
3\.Harbor私服的使用
#推送之前先登录Harbor
docker login 10.0.86.193
admin
Harbor12345
提示success登录成功
查看自己有哪些镜像;docker images
把需要上传到Harbor的镜像运行如下命令就可以了
#镜像打标签
[root@centos7 ~]#docker tag 镜像名:标签 私服地址/仓库项目名/镜像名:标签
#推送到私服
[root@centos7 ~]#docker push 私服地址/仓库项目名/镜像名:标签
#从私服拉取镜像
[root@centos7 ~]#docker pull 私服地址/仓库项目名/镜像名:标签