共计 4063 个字符,预计需要花费 11 分钟才能阅读完成。
为什么要搭建私有镜像仓库
对于一个刚刚接触 Docker 的人来说, 官方的 Docker hub 是用于管理公共镜像。既然官方提供了镜像仓库我们为什么还要去自己搭建私有仓库呢?虽然也可以托管私有镜像。我们可以非常方便的把我们自己镜像推送上去,但是 Docker hub 提供的私有仓库个数有限。对于个人来说 Docker hub 是个不错的选择,但是对于企业来说,相对于安全,成本和公司的架构来说搭建自己的私有镜像仓库才是正确的道路。
什么是 Harbor? 为什么要选择 Harbor
Harbor 是一个用于存储和分发 Docker 镜像的企业级 Registry 服务器,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源 Docker Distribution。作为一个企业级私有 Registry 服务器,Harbor 提供了更好的性能和安全。提升用户使用 Registry 构建和运行环境传输镜像的效率。Harbor 支持安装在多个 Registry 节点的镜像资源复制,镜像全部保存在私有 Registry 中,确保数据和知识产权在公司内部网络中管控。另外,Harbor 也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。
- 基于角色的访问控制 – 用户与 Docker 镜像仓库通过“项目”进行组织管理,一个用户可以对多个镜像仓库在同一命名空间(project)里有不同的权限。
- 镜像复制 – 镜像可以在多个 Registry 实例中复制(同步)。尤其适合于负载均衡,高可用,混合云和多云的场景。
- 图形化用户界面 – 用户可以通过浏览器来浏览,检索当前 Docker 镜像仓库,管理项目和命名空间。
- AD/LDAP 支持 – Harbor 可以集成企业内部已有的 AD/LDAP,用于鉴权认证管理。
- 审计管理 – 所有针对镜像仓库的操作都可以被记录追溯,用于审计管理。
- 国际化 – 已拥有英文、中文、德文、日文和俄文的本地化版本。更多的语言将会添加进来。
- RESTful API – RESTful API 提供给管理员对于 Harbor 更多的操控, 使得与其它管理软件集成变得更容易。
部署简单 – 提供在线和离线两种安装工具,也可以安装到 vSphere 平台 (OVA 方式) 虚拟设备。
这就是官网原话。完美解释了什么是 Harbor? 为什么要选择 Harbor。上面解释那么多的 Harbor, 现在我们来开始安装吧。Harbor 安装
要安装 Harbor, 有以下几个先决条件:
Python 版本大于或者等于 2.7
Docker engine 的版本大于等于 1.10
Docker Compose 的版本大于 1.6.0
首先我们需要检查自己服务器是否支持上面 3 个条件。输入以下代码检查
#python2.7 官网安装页面
https://www.python.org/downloads/release/python-2711/
# 检查 Python 版本.Ubuntu 16.04 已经集成了 python2.7。
python -V
# 检查 Docker 的版本
docker -v
#Docker Compose 安装脚本
sudo curl -L https://github.com/docker/compose/releases/download/1.6.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
# 检查 Docker Compose 的版
docker-compose –version
# 如果提示 Permission denied。执行以下语句赋权
sudo chmod +x /usr/local/bin/docker-compose
确保服务器上的软件版本已经满足以上要求之后。我们现在开始安装 Harbor。如果不知道怎么安装 docker 可以参考 https://www.linuxidc.com/Linux/2018-03/151318.htm
下载 Harbor
# 下载安装包
wget https://github.com/vmware/harbor/releases/download/v1.1.2/harbor-offline-installer-v1.1.2.tgz
# 解压
tar -xzf harbor-offline-installer-v1.1.2.tgz
cd harbor
# 编辑配置文件
vi harbor.cfg
配置文件注释参考]
## Configuration file of Harbor
# 设置访问地址,支持 IP,域名,主机名,禁止设置 127.0.0.1
hostname = reg.mydomain.com
# 访问方式,http 或者 https
ui_url_protocol = http
# 邮件通知相关设置
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 = Harbor12345
#harbor 认证模式,默认为 db_auth,本地 mysql,也可以配置 ldap 认证
auth_mode = db_auth
#ldap 认证配置
ldap_url = ldaps://ldap.mydomain.com
ldap_basedn = ou=people,dc=mydomain,dc=com
ldap_uid = uid
ldap_scope = 3
#mysql 数据库设置
db_password = root123
self_registration = on
use_compressed_js = on
max_job_workers = 3
token_expiration = 30
verify_remote_cert = on
customize_crt = on
# 显示的认证及组织信息
crt_country = CN
crt_state = State
crt_location = CN
crt_organization = organization
crt_organizationalunit = organizational unit
crt_commonname = example.com
crt_email = example@example.com
project_creation_restriction = everyone
#SSL 证书地址。只有开启 https 访问才生效
ssl_cert = /data/cert/server.crt
ssl_cert_key = /data/cert/server.key
#############
以上按照自己需求修改。如果想开启 https 模式访问需要自己申请 ssl 证书。harbor 默认监听 80 端口。如果需要修改端口。请修改目录下的 docker-compose.yml 文件,
修改完成之后。运行
sudo ./install.sh
进行安装。安装完成之后他会自己启动。这里他会自己下载一些他所需的 images。过程有点慢。可以通过阿里云的镜像加速器来加速。阿里云镜像加速器 . 打开链接登录之后点击镜像加速。然后你会得到一个专属加速地址。如图
可以根据自己的环境查看文档安装使用。然后等待命令执行结束。
开启 https
如果使用 http 的这里可以跳过,我们把已经申请好的证书文件放到 /data/cert 目录下面。然后修改 harbor.cfg 文件
安装成功之后打开之前自己设定的域名或者 IP 地址。测试地址。测试用户名:harbor_test,测试密码:Harbor_test123
使用 harbor
创建用户
harbor 已经创建成功。现在我们来开始创建一个用户。
创建项目
创建项目,并添加用户
上传镜像
首先使用 docker login 命令登录:
# 登录
robin:~ robin$ sudo docker login shepherd618.cn
Username: admin
Password:
Login Succeeded
# 查看本地镜像
robin:docker_demo robin$ sudo docker images
Password:
REPOSITORY TAG IMAGE ID CREATED SIZE
docker_demo latest fdd994bee741 19 seconds ago 283MB
node 8.9-alpine 406f227b21f5 2 weeks ago 68.1MB
# 给 dcoker_demo 新增 tag
robin:docker_demo robin$ sudo docker tag docker_demo shepherd618.cn/test/demo
#push images
robin:docker_demo robin$ docker push shepherd618.cn/test/demo
The push refers to repository [shepherd618.cn/test/demo]
f8387a884f73: Layer already exists
d74f9d9e7013: Pushed
f846841ed47f: Layer already exists
0198944a9875: Layer already exists
9dfa40a0da3b: Layer already exists
latest: digest: sha256:5b33acc5edf6f48cbd8e7ccd216daa4a7da1ebd4871fbc68bc2517136f1ccf44 size: 1374
然后打开 harbor, 会看到刚刚上传的 images 和操作日志
当我们需要用到这个 images 的时候可以通过上面给的 pull 命令下载到本地。到此整个安装过程结束。