学习docker的途中,怎么能少了牛逼的harbor呢,先说说harbor是什么吧,harbor: Harbor 是一个企业级的 Docker Registry,可以实现 images 的私有存储和日志统计权限控制等功能,并支持创建多项目(Harbor 提出的概念),基于官方 Registry V2 实现。 通过地址:https://github.com/vmware/harbor/releases 可以下载最新的版本。 官方提供了两种版本:在线版和离线版。
准备:
Python、Docker和Docker Compose
python需要2.7以上的版本
然后docker我用的是docker18.06.1-ce
Docker Compose-1.22.0
安装方式我之前的博客里有提到,也可以百度自行搜索
安装:
Harbor 可以通过以下两种方式之一安装:
-
在线安装程序:安装程序从Docker集线器下载Harbour的映像。因此,安装程序的尺寸非常小。
-
脱机安装程序:当主机没有Internet连接时,请使用此安装程序。安装程序包含预制图像,因此其大小较大。
然后Harbor最新的版本是1.6.2
然后从官方的github地址下载,速度感人,我挂了梯子速度也很慢,然后我就找了一个谷歌的1.5.1的安装包地址。
具体安装步骤如下 -
下载安装程序;
-
配置ports.cfg ;
-
运行install.sh来安装和启动Harbor;
下载
➜ wget https://storage.googleapis.com/harbor-releases/harbor-online-installer-v1.5.1.tgz
➜ tar xvf harbor-online-installer-v1.5.1.tgz
配置Harbor
配置参数位于文件harbor.cfg中。
配置文件分为必选参数和可选参数,字面意思
必选参数:
- hostname:目标主机的主机名,用于访问UI和注册表服务。它应该是目标机器的IP地址或完全限定域名(FQDN),例如
192.168.1.10
或reg.yourdomain.com
。不要使用localhost
或127.0.0.1
为主机名 – 注册表服务需要外部客户端访问! - ui_url_protocol:(http或https。默认为http)用于访问UI和令牌/通知服务的协议。如果启用公证,则此参数必须为https。默认情况下,这是http。要设置https协议,请参阅使用HTTPS访问harbor。
- db_password:用于db_auth的MySQL数据库的根密码。更改此密码以供任何生产用途!
- max_job_workers:(默认值为3)作业服务中的最大复制工作数。对于每个映像复制作业,工作程序将存储库的所有标签同步到远程目标。增加此数字允许系统中更多的并发复制作业。但是,由于每个工作人员都会消耗一定数量的网络/ CPU / IO资源,请根据主机硬件资源选择该属性的值。
- customize_crt:(打开或关闭,默认为打开)当此属性打开时,准备脚本将为注册表令牌的生成/验证创建私钥和根证书。当密钥和根证书由外部源提供时,将此属性设置为off。有关详细信息,请参阅自定义密钥和harbor令牌服务证书。
- ssl_cert:SSL证书的路径,仅当协议设置为https时才应用
- ssl_cert_key:SSL密钥的路径,仅当协议设置为https时才应用
- secretkey_path:用于在复制策略中加密或解密远程注册表的密码的密钥路径。
可选参数:
- 电子邮件设置:Harbor需要这些参数才能向用户发送“密码重设”电子邮件,只有在需要该功能时才需要这些参数。另外,请注意,在默认情况下SSL连接时没有启用-如果你的SMTP服务器需要SSL,但不支持STARTTLS,那么你应该通过设置启用SSL email_ssl = TRUE。
- 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_admin_password:管理员的初始密码。该密码仅在Harbor 第一次启动时生效。之后,此设置将被忽略,并且应在UI中设置管理员的密码。请注意,默认用户名/密码为admin / Harbor12345。
- auth_mode:使用的身份验证类型。默认情况下,它是db_auth,即凭据存储在数据库中。对于LDAP身份验证,请将其设置为ldap_auth。重要提示:从现有的Harbor 实例升级时,必须确保auth_mode
harbor.cfg
在启动新版本的Harbor之前是一样的。否则,升级后用户可能无法登录。 - ldap_url:LDAP端点URL(例如
ldaps://ldap.mydomain.com
)。 仅当auth_mode设置为ldap_auth时才使用。 - ldap_searchdn:具有搜索LDAP / AD服务器权限的用户的DN(例如
uid=admin,ou=people,dc=mydomain,dc=com
)。 - ldap_search_pwd:由ldap_searchdn指定的用户的密码。
- LDAP_BASEDN:基本DN查找用户,如
ou=people,dc=mydomain,dc=com
。 仅当auth_mode设置为ldap_auth时才使用。 - LDAP_FILTER:用于查找用户,例如,搜索过滤器
(objectClass=person)
。 - ldap_uid:用于在LDAP搜索期间匹配用户的属性,它可以是uid,cn,电子邮件或其他属性。
- ldap_scope:搜索用户的范围,1-LDAP_SCOPE_BASE,2-LDAP_SCOPE_ONELEVEL,3-LDAP_SCOPE_SUBTREE。默认值为3。
- self_registration:(开或关,默认为开)启用/禁用用户注册自己的能力。禁用时,只能由管理员用户创建新用户,只有管理员用户才能在海港创建新用户。 注意:当auth_mode设置为ldap_auth时,自注册功能始终被禁用,并且该标志被忽略。
- token_expiration:令牌服务创建的令牌的到期时间(以分钟为单位),默认值为30分钟。
- project_creation_restriction:用于控制用户有权创建项目的标志。默认情况下,每个人都可以创建一个项目,设置为“adminonly”,以便只有admin才能创建项目。
- verify_remote_cert:(上或关闭,默认为上)该标志,判断是否验证SSL / TLS证书时码头与远程注册表实例通信。将此属性设置为off可绕过SSL / TLS验证,SSL / TLS验证通常在远程实例具有自签名或不受信任的证书时使用。
修改完配置文件以后
➜ sudo ./prepare
➜ docker-compose up -d
也可以直接
➜ sudo ./install
然后等一会就完成了
如果你80端口已经被占用了,想换一个,修改docker-compose.yml
里proxy的端口映射,然后执行
➜ docker-compose down -v
➜ docker-compose up -d
然后浏览器打开http://ip:port
登录,默认管理账号是admin/Harbor12345(配置文件的harbor_admin_password:)
使用
首先在harbor上新建一个项目text,之后在本地的docker配置文件下面修改
➜ vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://vw0w4qo0.mirror.aliyuncs.com"],
"insecure-registries": ["192.168.31.57"] //添加这一行,地址是harbor主机的ip
}
接着重启服务
➜ systemctl restart docker
➜ docker login 192.168.31.150
Username: admin
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
给镜像打tag
➜ docker tag zuolan/resume:latest 192.168.31.150/test/zuoloan/resume:0.0.1
其中test是项目名称,后面的是介绍,作者/内容:版本
上传
➜ docker push 192.168.31.150/test/zuoloan/resume:0.0.1
拉取镜像也是一样
➜ docker pull 192.168.31.150/test/zuoloan/resume:0.0.1
网友评论