Docker搭建Harbor私有仓库

我要开发同款
微信用户07532227422021年08月02日
588阅读

作品详情

一、Harbor 介绍Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境内的Registry也是非常必要的。Harbor是由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能。二、环境、软件准备本次演示环境,我是在虚拟机 Linux RedHat 7.2 上操作,以下是安装的软件及版本:Docker:version 17.09.0-ceDocker-compose: version 1.21.2Harbor: version 1.5.1注意:Harbor的所有服务组件都是在Docker中部署的,所以官方安装使用Docker-compose快速部署,所以我们需要安装Docker、Docker-compose。由于Harbor是基于Docker Registry V2版本,所以就要求Docker版本不小于1.10.0,Docker-compose版本不小于1.6.01)Docker 安装阿里云地址:https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/yum install docker-ce # 安装社区版本12) Docker-compose 安装1、下载指定版本的docker-compose (https://github.com/docker/compose/releases) $ curl -L https://github.com/docker/compose/releases/download/1.13.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose2、对二进制文件赋可执行权限 $ sudo chmod +x /usr/local/bin/docker-compose3、测试下docker-compose是否安装成功 $ docker-compose --version123456三、Harbor 服务搭建1)下载Harbor安装文件从 github harbor 官网 release 页面下载指定版本的安装包。1、在线安装包 $ wget https://github.com/vmware/harbor/releases/download/v1.1.2/harbor-online-installer-v1.1.2.tgz $ tar xvf harbor-online-installer-v1.1.2.tgz2、离线安装包 $ wget https://storage.googleapis.com/harbor-releases/release-1.5.0/harbor-offline-installer-v1.5.1.tgz $ tar xvf harbor-offline-installer-v1.5.1.tgz1234562)配置Harbor解压缩之后,目录下回生成 harbor.conf 文件,该文件就是Harbor的配置文件## Configuration file of Harbor# hostname设置访问地址,可以使用ip、域名,不可以设置为127.0.0.1或localhosthostname = 192.168.80.42# 访问协议,默认是http,也可以设置https,如果设置https,则nginx ssl需要设置onui_url_protocol = http# mysql数据库root用户默认密码root123,实际使用时修改下db_password = root123max_job_workers = 3 customize_crt = onssl_cert = /data/cert/server.crtssl_cert_key = /data/cert/server.keysecretkey_path = /dataadmiral_url = NA# 邮件设置,发送重置密码邮件时使用email_identity = email_server = smtp.mydomain.comemail_server_port = 25email_username = sample_admin@mydomain.comemail_password = abcemail_from = admin email_ssl = false# 启动Harbor后,管理员UI登录的密码,默认是Harbor12345harbor_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 = everyoneverify_remote_cert = on12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152533)启动 Harbor修改完配置文件后,在的当前目录执行 ./install.sh,Harbor服务就会根据当期目录下的 docker-compose.yml开始下载依赖的镜像,检测并按照顺序依次启动各个服务,Harbor依赖的镜像及启动服务如下:# docker images vmware/redis-photon v1.5.1 19245c7a4f51 12 days ago 207MBvmware/clair-photon v2.0.1-v1.5.1 e7f0ab982469 12 days ago 303MBvmware/notary-server-photon v0.5.1-v1.5.1 611385e920c3 12 days ago 211MBvmware/notary-signer-photon v0.5.1-v1.5.1 f9e01495db0e 12 days ago 209MBvmware/registry-photon v2.6.2-v1.5.1 2efae6b250b1 12 days ago 198MBvmware/nginx-photon v1.5.1 90d35cd72a68 12 days ago 135MBvmware/harbor-log v1.5.1 67000769dfac 12 days ago 200MBvmware/harbor-jobservice v1.5.1 3f7a7987ca5b 12 days ago 194MBvmware/harbor-ui v1.5.1 8dbe945233a8 12 days ago 212MBvmware/harbor-adminserver v1.5.1 a11b8eb3f9d8 12 days ago 183MBvmware/harbor-db v1.5.1 afa780d73279 12 days ago 526MBvmware/mariadb-photon v1.5.1 59ed57632415 12 days ago 526MBvmware/postgresql-photon v1.5.1 41b693c0ce50 12 days ago 221MBvmware/harbor-migrator v1.5.0 466c57ab0dc3 5 weeks ago 1.16GBvmware/photon 1.0 4b481ecbef2a 6 weeks ago 130MB1234567891011121314151617# docker-compose ps Name Command State Ports ----------------------------------------------------------------------------------------------------------------------------------------------harbor-adminserver /harbor/start.sh Up (health: starting) harbor-db /usr/local/bin/docker-entr ... Up (health: starting) 3306/tcp harbor-jobservice /harbor/start.sh Up harbor-log /bin/sh -c /usr/local/bin/ ... Up (health: starting) 127.0.0.1:1514->10514/tcp harbor-ui /harbor/start.sh Up (health: starting) nginx nginx -g daemon off; Up (health: starting) 0.0.0.0:443->443/tcp, 0.0.0.0:4443->4443/tcp, 0.0.0.0:80->80/tcpredis docker-entrypoint.sh redis ... Up 6379/tcp registry /entrypoint.sh serve /etc/ ... Up (health: starting) 5000/tcp 123456789101112启动完成后,我们访问刚设置的 hostname 即可 http://192.168.80.42/,默认是80端口,如果端口占用,我们可以去修改docker-compose.yml文件中,对应服务的端口映射4) 配置并启动Harbor之后,本地执行登录操作,报错:docker login 192.168.80.42Username: adminPassword:Error response from daemon: Get https://192.168.80.42/v1/users/: dial tcp 192.168.80.42:443: getsockopt: connection refused1234这是因为 docker1.3.2 版本开始默认 docker registry 使用的是 https,我们设置 Harbor 默认 http 方式,所以当执行用 docker login、pull、push 等命令操作非 https 的 docker regsitry 的时就会报错。解决办法:如果系统是MacOS,则可以点击“Preference”里面的“Advanced”在“Insecure Registry”里加上192.168.80.42,重启Docker客户端就可以了;如果系统是Ubuntu,则修改配置文件/lib/systemd/system/docker.service,修改[Service]下ExecStart参数,增加–insecure-registry 192.168.80.42如果系统是Centos或RedHat,可以修改配置 /usr/lib/systemd/system/docker.service,将 ExecStart 增加 –insecure-registry 192.168.80.42四、部署 SSL 认证1) 概念理解签名证书与自签名证书签名证书:由权威颁发机构颁发给服务器或者个人用于证明自己身份的东西自签名证书:由服务器自己颁发给自己,用于证明自己身份的东西,非权威颁发机构发布opensslopenssl 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用KEY与CSR的区别Key通常用来存放一个公钥或者私钥,并非X.509证书,编码同样的,可能是PEM,也可能是DER。证书自身拥有一个密钥对(即一个公钥和一个私钥),由公钥(Public Key)与私钥(Private Key)是通过一种算法得到,公钥是密钥对中公开的部分,私钥则是非公开的部分。一般公钥和密钥的关系为:1,公钥和私钥成对出现、2,公开的密钥叫公钥,只有自己知道的叫私钥、3,用公钥加密的数据只有对应的私钥可以解密、4,用私钥加密的数据只有对应的公钥可以解密、5,如果可以用公钥解密,则必然是对应的私钥加的密、6,如果可以用私钥解密,则必然是对应的公钥加的密CSR文件必须在申请和购买SSL证书之前创建。也就是证书申请者在申请数字证书时由CSP(加密服务提供者)在生成私钥的同时也生成证书请求文件,证书申请 者只要把CSR文件提交给证书颁发机构后,证书颁发机构使用其根证书私钥签名就生成了证书公钥文件,也就是颁发给用户的证书2) 创建根证书# 创建证书存放目录mkdir -p /data/cert && cd /data/cert# 创建自己的CA证书(不使用第三方权威机构的CA来认证,自己充当CA的角色)openssl genrsa -out ca.key 2048 # 生成根证书私钥(无加密)# 生成自签名证书(使用已有私钥ca.key自行签发根证书)openssl req -x509 -new -nodes -key ca.key -days 10000 -out ca.crt -subj “/CN=Harbor-ca”req  产生证书签发申请命令-x509 签发X.509格式证书命令。X.509是最通用的一种签名证书格式。-new  生成证书请求-key  指定私钥文件-nodes 表示私钥不加密-out   输出-subj 指定用户信息-days 有效期3) 创建服务器端证书# 生成服务器端私钥和CSR签名请求openssl req -newkey rsa:4096 -nodes -sha256 -keyout server.key -out server.csr    # 一路回车# 签发服务器证书echo subjectAltName = IP:192.168.80.42 > extfile.cnfopenssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -days 365 -extfile extfile.cnf -out server.crtx509  签发X.509格式证书命令。-req   表示证书输入请求。-days  表示有效天数-extensions 表示按OpenSSL配置文件v3_req项添加扩展。-CA   表示CA证书,这里为ca.crt-CAkey  表示CA证书密钥,这里为ca.key-CAcreateserial 表示创建CA证书序列号-extfile  指定文件4) 修改 Harbor 的配置文件 hardor.cfg# 修改成 httpsui_url_protocol = https# 认证文件的路径ssl_cert = /data/cert/server.crtssl_cert_key = /data/cert/server.key1234565) 设置 docker 证书# 如果如下目录不存在,请创建,如果有域名请按此格式依次创建mkdir -p /etc/docker/certs.d/192.168.80.42# mkdir -p /etc/docker/certs.d/[IP2]# mkdir -p /etc/docker/certs.d/[example1.com] # 如果端口为443,则不需要指定。如果为自定义端口,请指定端口# /etc/docker/certs.d/yourdomain.com:port123456mkdir -p /etc/docker/certs.d/192.168.80.42# 将 ca 根证书依次复制到上述创建的目录中cp ca.crt /etc/docker/certs.d/192.168.80.42cp server.crt /etc/docker/certs.d/192.168.80.426) 重启 docker 和 启动 Harbor# 重启 dockersystemctl restart docker# 启动Harbor./install.sh启动完成后,我们访问刚设置的 hostname 即可 https://192.168.80.42/,默认是80端口,如果端口占用,我们可以去修改docker-compose.yml文件中,对应服务的端口映射7 ) 后台登录# 登录仓库docker login -u admin -p Harbor12345 192.168.80.42# 登出仓库docker logout 192.168.80.4212345注:其他服务器如果需要访问 Harbor 仓库,把 /etc/docker/certs.d/192.168.80.42 文件夹复制到该主机的相同位置即可灬勿忘丶心安关注5225专栏目录Docker之Harbor私服的搭建及使用张益达的博客 2万+今天给大家带来Harbor环境的搭建,以及使用介绍 Harbor介绍: Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境内的Registry 也是非常必要的。Harbor是由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、...Finn:博主有个问题请教下,我配置了这个 ExecStart=/usr/bin/dockerd -H fd:// --insecure-registry xxx.xxx.xxx.xxx还是登陆不上harbor,我重启服务用systemctl restart docker报错(Unit docker.service failed to load: No such file or directory),用的是service docker restart重启的,是不是这个原因(ubunto系统)1 年前回复Alone1717:讲的非常详细,解决了我的问题2 年前回复相关推荐Docker镜像仓库Harbor之搭建及配置_哎_小羊的博客-CSDN...7-1Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境内的Registry也是非常必要的。Harbor是由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理...Docker 之 部署 Harbor_Dusty丶one的博客_docker harbor
查看全文
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论