企业级私有镜像仓库 Harbor简介:Harbor 是一个用于存储和分发 Docker 镜像的企业级 Registry 服务器,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源 Docker Distribution。作为一个企业级私有 Registry 服务器,Harbor 提供了更好的性能和安全。提升用户使用 Registry 构建和运行环境传输镜像的效率。Harbor 支持安装在多个 Registry 节点的镜像资源复制,镜像全部保存在私有 Registry 中,确保数据和知识产权在公司内部网络中管控。另外,Harbor 也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。Harbor 是由 VMware 中国研发团队负责开发的开源企业级 Docker Registry, 不仅解决了我们直接使用 Docker Registry 的功能缺失, 更解决了我们在生产使用 Docker Registry 面临的高可用、镜像仓库直接复制、镜像仓库性能等运维痛点。
1 安装Docker
cd /etc/yum.repos.dwget https://download.docker.com/linux/centos/docker-ce.repoyum install docker-ce -ysystemctl start dockersystemctl enable docker
2 安装 docker-compose
curl -L https://github.com/docker/compose/releases/download/1.18.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-composechmod +x /usr/local/bin/docker-composedocker-compose version
3 下载 Harbor 安装包
离线地址wget https://storage.googleapis.com/harbor-releases/release-1.7.0/harbor-offline-installer-v1.7.4.tgz在线地址wget https://storage.googleapis.com/harbor-releases/release-1.7.0/harbor-online-installer-v1.7.4.tgz
解压:(使用离线包)
tar xf harbor-offline-installer-v1.7.4.tgz
4 自签证书
cd harbormkdir ssl && cd ssl #存放证书使用openssl req -x509 -new -nodes -sha512 -days 3650 \ -subj "/C=CN/ST=PK/L=PK/O=example/OU=Personal/CN=fuck1899.com" \ -key ca.key \ -out ca.crtopenssl genrsa -out fuck1899.com.key 4096openssl req -sha512 -new \ -subj "/C=CN/ST=PK/L=PK/O=example/OU=Personal/CN=fuck1899.com" \ -key fuck1899.com.key \ -out fuck1899.com.csr cat > v3.ext <<-EOFauthorityKeyIdentifier=keyid,issuerbasicConstraints=CA:FALSEkeyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEnciphermentextendedKeyUsage = serverAuth subjectAltName = @alt_names[alt_names]DNS.1=fuck1899.comDNS.2=fuck1899.comDNS.3=hellozzEOFopenssl x509 -req -sha512 -days 3650 \ -extfile v3.ext \ -CA ca.crt -CAkey ca.key -CAcreateserial \ -in fuck1899.com.csr \ -out fuck1899.com.crtopenssl x509 -inform PEM -in fuck1899.com.crt -out fuck1899.com.cert修改配置文件vim harbor.cfg修改一下行hostname = fuck1899.comui_url_protocol = httpsssl_cert = ./ssl/fuck1899.com.crtssl_cert_key = ./ssl/fuck1899.com.key主意:如果不需要做自签证的证书只需要修改一下两个配置customize_crt = offhostname = fuck1899.com保存退出将证书文件拷贝到docker目录下使我们可以通过命令行提交镜像不受自签证书认证影响mkdir /etc/docker/certs.d/fuck1899.com -pcp harbor/ssl/fuck1899.com.cert /etc/docker/certs.d/fuck1899.com/cp harbor/ssl/fuck1899.com.key /etc/docker/certs.d/fuck1899.com/cp harbor/ssl/ca.crt /etc/docker/certs.d/fuck1899.com/如果是其他主机命令行提交或者登陆到这个harbor服务器,那么也需要将这个证书文件拷贝到自己主机/etc/docker/certs.d/fuck1899.com下 没有这个目录可以手动创建是配置生效./prepare
5 安装
./install.sh
[Step 3]: checking existing instance of Harbor ...Creating registry ... doneCreating harbor-core ... done[Step 4]: starting Harbor ...Creating harbor-portal ... doneCreating nginx ... doneCreating redis ... Creating harbor-adminserver ... Creating harbor-db ... Creating registryctl ... Creating registry ... Creating harbor-core ... Creating harbor-portal ... Creating harbor-jobservice ... Creating nginx ... ✔ ----Harbor has been installed and started successfully.----Now you should be able to visit the admin portal at https://fuck1899.com. For more details, please visit https://github.com/goharbor/harbor .
说明已经安装成功
通过docker-compose查看都运行了一些什么镜像
docker-compose ps Name Command State Ports -----------------------------------------------------------------------------------------------------------harbor-adminserver /harbor/start.sh Up harbor-core /harbor/start.sh Up harbor-db /entrypoint.sh postgres Up 5432/tcp harbor-jobservice /harbor/start.sh Up harbor-log /bin/sh -c /usr/local/bin/ ... Up 127.0.0.1:1514->10514/tcp harbor-portal nginx -g daemon off; Up 80/tcp nginx nginx -g daemon off; Up 0.0.0.0:443->443/tcp, 0.0.0.0:4443->4443/tcp, 0.0.0.0:80->80/tcp redis docker-entrypoint.sh redis ... Up 6379/tcp registry /entrypoint.sh /etc/regist ... Up 5000/tcp registryctl /harbor/start.sh Up
6 浏览器访问测试
访问签需要添加本机 host 文件,因为这个域名是不真实的
linux 添加hosts 文件
47.244.163.105 fuck1899.com
windows添加 hosts 文件
C:\Windows\System32\drivers\etc
编辑hosts 添加:
服务器IP fuck1899.com
但是显示是不安全的
查看证书是否有我们颁发
上图显示证书有我们颁发
官方解释
请注意,即使我们通过自签名CA签署证书并将CA部署到上述位置,某些浏览器仍可能出于安全原因显示有关证书颁发机构(CA)未知的警告。这是因为自签名CA本质上不是受信任的第三方CA. 您可以自己将CA导入浏览器以解决警告。
7 登陆
默认密码为admin Harbor12345如果你没有修改过的话
linux 端登陆使用
docker login yourdomain.com
windows直接打开地址
8 创建项目等
创建项目 1 公开 2 不公开创建用户用户关联项目 1 添加成员 2 角色授权
9 harbor 上传下载镜像
第一步登陆 输入用户名和密码
docker login fuck1899.com面交互方式登陆:docker login -u用户名 -p密码 镜像服务器
第二步 给镜像打tag
docker tag oddrationale/docker-shadowsocks fuck1899.com/sundezhao/ss:v1#oddrationale/docker-shadowsocks 需要大tag的镜像 #fuck1899.com harbor服务器#sundezhao 项目名称#ss:v1 tag
第三步 push镜像
docker push fuck1899.com/sundezhao/ss:v1
第四步 查看已经push的镜像
第五步 pull 镜像
docker pull fuck1899.com/sundezhao/ss:v1
结束语:
至此Harbor已经搭建完成并可以使用,对于企业来说私有仓库是必须有的,快来测试一下把!