搭建harbor仓库、LDAP认证
ldap: 192.168.199.177
c5game.com
宿主机:192.168.199.224
测试客户机:192.168.199.223
安装docker、docker-compose
访问查看最新版本https://github.com/goharbor/harbor/releases并下载harbor-offline-installer-vxxx.tgz
[root@docker-registry ~]# cd /opt/
[root@docker-registry opt]# wget https://storage.googleapis.com/harbor-releases/release-1.6.0/harbor-offline-installer-v1.6.2.tgz
[root@docker-registry opt]tar zxvf harbor-offline-installer-v1.6.2.tgz && cd !$
修改 harbor.cfg
[root@docker-registry harbor]# cat harbor.cfg |grep -Ev '^$|^#'
_version = 1.6.
hostname = 192.168.199.224
ui_url_protocol = http
max_job_workers =
customize_crt = on
ssl_cert = /data/cert/server.crt
ssl_cert_key = /data/cert/server.key
secretkey_path = /data
admiral_url = NA
log_rotate_count =
log_rotate_size = 200M
http_proxy =
https_proxy =
no_proxy = 127.0.0.1,localhost,ui,registry
email_identity =
email_server = smtp.mydomain.com
email_server_port =
email_username = sample_admin@mydomain.com
email_password = abc
email_from = admin <sample_admin@mydomain.com>
email_ssl = false
email_insecure = false
harbor_admin_password = TTdjy911.
auth_mode = ldap_auth
ldap_url = ldap://192.168.199.177:389
ldap_searchdn = cn=admin,dc=c5game,dc=com
ldap_search_pwd = TTdjy911.
ldap_basedn = ou=people,dc=c5game,dc=com
ldap_uid = uid
ldap_scope =
ldap_timeout =
ldap_verify_cert = true
ldap_group_basedn = ou=group,dc=c5game,dc=com
ldap_group_filter = objectclass=group
ldap_group_gid = cn
ldap_group_scope =
self_registration = on
token_expiration =
project_creation_restriction = everyone
db_host = postgresql
db_password = root123
db_port =
db_user = postgres
redis_host = redis
redis_port =
redis_password =
redis_db_index = ,,
clair_db_host = postgresql
clair_db_password = root123
clair_db_port =
clair_db_username = postgres
clair_db = postgres
clair_updaters_interval =
uaa_endpoint = uaa.mydomain.org
uaa_clientid = id
uaa_clientsecret = secret
uaa_verify_cert = true
uaa_ca_cert = /path/to/ca.pem
registry_storage_provider_name = filesystem
registry_storage_provider_config =
registry_custom_ca_bundle =
强调:harbor默认链接的是db_auth,如果想使用ldap_auth,
1,在默认情况下第一次登陆的时候在页面的设置里将认证方式改为ldap_auth,一定要将各个配置设置正确;
2,想使用ldap_auth的话,也可以在最初设置认证模式的时候设置为ldap模式,选项设置不正确可以在UI页面设置。
提醒:不管你设置为哪一种模式,只要用户中添加了除管理员的其他用户之后,认证模式就不能再更改;
执行 install.sh 安装
[root@docker-registry harbor]# ./install.sh
访问 http://192.168.199.224/harbor/sign-in (如果页面是空白,请更改浏览器模式为‘极速模式’)

LDAP认证

邮件设置

宿主机和客户机都需要更改/etc/sysconfig/docker 不然连接时候报错
docker login 192.168.199.224
Username: admin
Password:
Error response from daemon: Get https://192.168.199.224/v1/users/: dial tcp 10.236.63.76:443: getsockopt: connection refused
这是因为docker1.3.2版本开始默认docker registry使用的是https,我们设置Harbor默认http方式,所以当执行用docker login、pull、push等命令操作非https的docker regsitry的时就会报错。解决办法:
如果系统是MacOS,则可以点击“Preference”里面的“Advanced”在“Insecure Registry”里加上10.236.63.76,重启Docker客户端就可以了。
如果系统是Ubuntu,则修改配置文件/lib/systemd/system/docker.service,修改[Service]下ExecStart参数,增加 --insecure-registry 192.168.199.224
如果系统是Centos,可以修改配置/etc/sysconfig/docker,将OPTIONS增加 --insecure-registry 192.168.199.224
# Modify these options if you want to change the way the docker daemon runs
OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false --insecure-registry 192.168.199.224'
if [ -z "${DOCKER_CERT_PATH}" ]; then
DOCKER_CERT_PATH=/etc/docker
fi
然后重启docker服务或者重启宿主机
上传下载镜像
新建一个项目“test” ,访问级别私有,客户机安装docker
客户机下载测试镜像nginx
[root@test sysconfig]# docker pull nginx
给nginx镜像重做标签
[root@test sysconfig]# docker tag nginx:latest 192.168.199.224/test/nginx:latest
登录服务器
[root@test sysconfig]# docker login 192.168.199.224
Username (admin): admin
Password:
Login Succeeded
上传镜像
[root@test sysconfig]# docker push 192.168.199.224/test/nginx
使用LDAP账户拉取私库 test 镜像失败
docker pull 192.168.199.224/test/nginx:latest
Error response from daemon: repository 192.168.199.224/test/nginx:latest not found: does not exist or no pull access
这是原因可能有,一是Harbor仓库上test/nginx确实不存在,二是项目未设置公开的时候,该账户未执行docker login 192.168.199.224登录操作,三是该账户对192.168.199.224/test项目没有权限,需要在该项目下增加该成员,并选择角色
如果需要修改Harbor的配置文件harbor.cfg,因为Harbor是基于docker-compose服务编排的,我们可以使用docker-compose命令重启Harbor。不修改配置文件,重启Harbor命令:docker-compose start | stop | restart
、停止Harbor
$ docker-compose down -v
Stopping nginx ... done
Stopping harbor-jobservice ... done
......
Removing harbor-log ... done
Removing network harbor_harbor 、启动Harbor
$ docker-compose up -d
Creating network "harbor_harbor" with the default driver
Creating harbor-log ...
......
Creating nginx
Creating harbor-jobservice ... done
参考: https://www.ilanni.com/?p=13492
https://blog.csdn.net/aixiaoyang168/article/details/73549898
https://ivanzz1001.github.io/records/post/docker/2018/04/11/docker-harbor-uage#2-%E7%94%A8%E6%88%B7%E8%B4%A6%E6%88%B7user-account 使用文档
https://github.com/goharbor/harbor/blob/master/docs/installation_guide.md#configuring-harbor-listening-on-a-customized-port 官网
搭建harbor仓库、LDAP认证的更多相关文章
- [Kubernetes]CentOS7下搭建Harbor仓库
环境依赖: Harbor仓库需要环境:Python 2.7或以上版本,Docker 1.10或以上,Docker Compose 1.6.0或以上. CentOS7自带Python,所以不需要安装. ...
- Docker 私有仓库 Harbor registry 安全认证搭建 [Https]
Harbor源码地址:https://github.com/vmware/harborHarbort特性:基于角色控制用户和仓库都是基于项目进行组织的, 而用户基于项目可以拥有不同的权限.基于镜像的复 ...
- 搭建Harbor企业级docker仓库
搭建Harbor企业级docker仓库 一.Harbor简介 1.Harbor介绍 Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如 ...
- 搭建私有仓库Harbor
搭建Harbor企业级docker仓库 搭建Harbor企业级docker仓库 一.Harbor简介 1.Harbor介绍 Harbor是一个用于存储和分发Docker镜像的企业级Registry ...
- 搭建Harbor私有镜像仓库--v1.5.1
搭建Harbor私有镜像仓库--v1.5.1 1.介绍 Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境 ...
- 本地docker搭建gitlab, 并配置ldap认证
基于Docker在Mac OS X系统中的部署和设置GitLab的具体过程如下: 1. 安装Docker for Mac (参见https://docs.docker.com/docker-for ...
- kubernetes搭建Harbor无坑及Harbor仓库同步
一.helm搭建harbor 1.安装helm 1.1.安装helm客户端 tar -zxvf helm-v2.14.3-linux-amd64.tar.gz mv linux-amd64/helm ...
- Centos7搭建Harbor私有仓库(二)
1 说明 前文Centos7搭建Harbor私有仓库(一)中成功搭建了Harbor,但,是以http方式搭建的,这里我们修改为https方式 以下基于镜像CentOS-7-x86_64-Minimal ...
- 菜鸟系列docker——搭建私有仓库harbor(6)
docker 搭建私有仓库harbor 1. 准备条件 安装docker sudo yum update sudo yum install -y yum-utils device-mapper-per ...
随机推荐
- MFC 如何在一个窗体中嵌套在另一个窗体中
其中的一个方法是讲子窗体设置为非模式对话框,具体操作为 :设置子窗体的border属性为none,style为 child. 在父窗体中需要用create来实现,具体例子如下. 在父窗体的OnInit ...
- leetcode997
class Solution: def findJudge(self, N: int, trust: 'List[List[int]]') -> int: if N==1 and len(tru ...
- Shell 编程(循环)
for in 循环语句 #!/bin/bash for x in one two three four do echo number $x done 例:取出passwd中每一行name 并输出 he ...
- 排查bug的步骤
原创文章,欢迎阅读,禁止转载. bug预防C/C++代码发布前的检查:检查有没有低级错误,可用cppcheck (bug预防是指在写程序的时候,bug没出现,积极的进行预防,减少.包括良好的编码风格. ...
- golang 操作redis 错误:failed redigo: unexpected type for String, got type int64
报错的代码: isExist,err := redis.String(conn.Do("EXISTS", key)) 这个操作返回的应该是bool类型,所有改成 isExist,e ...
- Netty socket.io 启用Epoll 模式异常
Epoll 环境为Linux 内核2.6 以上版本 Windows下不能启动 1:判断Linux环境 public static boolean isOSLinux() { Properties p ...
- javascript的DOM操作获取元素
一.document.getElementById() 根据Id获取元素节点 <div id="div1"> <p id="p1"> ...
- SpringBoot读取application.properties文件内容
application.properties存储数据的方式是key-value. application.properties内容 userManager.userFile=data/user.pro ...
- jquery接触初级-----juqery 动画函数
1. window.onload(), 一次只能保存对一个函数的引用:如果多次调用,他会自动用后面的函数覆盖前面的函数 2.$(document).ready(); 会在现有行为上追加新的行为,这些函 ...
- 尚硅谷springboot学习9-配置文件值注入
首先让我想到的是spring的依赖注入,这里我们可以将yaml或者properties配置文件中的值注入到java bean中 配置文件 person: lastName: hello age: 18 ...