上一篇中介绍了docker的公共仓库docker hub及官方的私有仓库docker registry,这一篇介绍企业级的registry服务器Harbor。
Harbor提供了更好的性能和安全并且提供了web界面。提升用户使用Registry构建和运行环境传输镜像的效率。Harbor支持安装在多个Registry节点的镜像资源复制,镜像全部保存在私有Registry中, 确保数据和知识产权在公司内部网络中管控。另外,Harbor也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。关于harbor的实现可以参考官方文档或者这个博客。
首先需要下载合适版本的包,这个可以通过在github选中版本下载
## 下载速度较慢
wget https://github.com/goharbor/harbor/releases/download/v1.9.2/harbor-offline-installer-v1.9.2.tgz
## 解压文件
tar zvxf harbor-offline-installer-v1.9.2.tgz
docker-compose是 Docker 官方编排(Orchestration)项目之一,负责快速的部署分布式应用。它允许用户通过一个单独的 docker-compose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。linux中安装从官网选择对应的版本进行安装即可。
## 过程比较慢,提前不用创建/usr/local/bin/docker-compose(路径不可更改)
curl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
## 将可执行权限用于二进制文件
chmod +x /usr/local/bin/docker-compose
## 查看是否执行成功
docker-compose --version
## 输出以下表示成功
docker-compose version 1.24.1, build 4667896b
在执行第一条时候,如果出现以下错误。
curl: (35) Peer reports incompatible or unsupported protocol version.
这是由于版本不兼容或不支持的原因,执行yum update -y nss curl libcurl后继续执行即可。
进入解压后的harbor文件夹中,找到harbor.yml文件(之前的版本好像是harbor.cfg文件),修改下面内容:
## 修改为主机ip,不能是127.0.0.1或者localhost
hostname: 192.168.80.128
## 端口号 默认为80
port: 8100
## admin账号的密码
harbor_admin_password: 663821
修改完成保存后,在harbor文件夹下执行./install.sh
。
它会经历好几个步骤:加载Harbor镜像(初次安装耗时较长)、准备运行环境、通过docker-compose启动harbor。这个过程较为漫长。完成后就可以启动浏览器访问http:ip/端口,账号为admin,密码是上面你设置的那个。
登录后的界面
接下来在项目中。点击新建项目,创建一个项目
在docker13后,register只能用https,由于我们配的都是http的,所以要先在/etc/docker/目录创建daemon.json文件(如果有,直接加入)并加入如下内容:
## 这里的ip和port需要与你刚配置的harbor.yml中一致
{ "insecure-registries":["ip:port"] }
完成后重启docker及harbor容器。
## 启动docker
systemctl daemon-reload
systemctl restart docker
## 启动harbor
docker-compose start
上传
提交镜像,如本地有一个registry镜像,需要提交到仓库:
[root@admin harbor]# docker login 192.168.80.128:8100
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
## 打标签 这里注意test为你刚建的那个项目名
docker tag registry 192.168.80.128:8100/test/registry:latest
## 查看打完标签的镜像列表
docker image ls
192.168.80.128:8100/test/registry latest f32a97de94e1 8 months ago 25.8MB
registry latest f32a97de94e1 8 months ago 25.8MB
## 提交
docker push 192.168.80.128:8100/test/registry:latest
The push refers to repository [192.168.80.128:8100/test/registry]
73d61bf022fd: Pushed
5bbc5831d696: Pushed
d5974ddb5a45: Pushed
f641ef7a37ad: Pushed
d9ff549177a9: Pushed
latest: digest: sha256:b1165286043f2745f45ea637873d61939bff6d9a59f76539d6228abf79f87774 size: 1363
docker pull 192.168.80.128:8100/test/registry:latest
其他命令
## 退出仓库
docker logout 192.168.80.128:8100
## 暂停harbor
docker-compose stop
## 启动harbor
docker-compose start
## 前台运行
docker-compose up
## 后台运行
docker-compose up -d
## 停止并移除容器
docker-compose down
如果想要继续更改harbor配置,那么改完后需要重新初始化Harbor:
# 暂停Harbor实例群
docker-compose down -v
# 生成配置文件,根据 harbor.yml 配置生成docker-compose文件
./prepare
# 后台启动Harbor实例群
docker-compose up -d
错误
有时候,重启docker后启动compose会出现以下问题。
这种进入harbor的目录下,执行docker-compose up -d即可