首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

性能环境之docker操作指南7(全网最全)

声明:原创作者独家授权,转载需要保留本公众号信息。

docker私有仓库管理系统--harbor

Harbor是Vmwar公司开源的企业级的Docker Registry管理项目,它主要提供Dcoker Registry管理UI,可基于角色访问控制, AD/LDAP 集成,日志审核等功能,完全的支持中文。

Harbor 的所有组件都在 Dcoker 中部署,所以 Harbor 可使用 Docker Compose 快速部署。 harbor共有六个容器组成:

  • harbor_ui:harbor的核心服务。
  • harbor_log:运行着rsyslog的容器,进行日志收集。
  • harbor_mysql:由官方mysql镜像构成的数据库容器
  • nginx:使用Nginx做反向代理
  • registry:官方的Docker registry
  • harbor_jobservice:Harbor的任务管理服务。

安装compose

下载harbor安装包

登录https://github.com/vmware/harbor/releases,下载最新的harbor realease包。 本文采用offline的安装方式,下载harbor-offline-installer-v1.5.1.tgz

生成SSL证书(可选)

如果为nginx开启ssl,即需要如下操作:

代码语言:javascript
复制
$ mkdir –p /data/harbor/cert     
$ cd /data/harbor/cert

执行如下命令生成证书

代码语言:javascript
复制
$ openssl req -x509 -nodes -days 36500 -newkey rsa:2048 -keyout server.key -out server.crt     

输入如下信息:     
-----     
#国家简称     
Country Name (2 letter code) [XX]:cn     
#省份全称     
State or Province Name (full name) []:beijing     
#城市     
Locality Name (eg, city) [Default City]:beijing     
#组织或公司名称     
Organization Name (eg, company) [Default Company Ltd]:test     
#部门名称     
Organizational Unit Name (eg, section) []:IT     
#网站域名     
Common Name (eg, your name or your server's hostname) []: *.test.com     
#邮箱地址     
Email Address []:mail@thomore.com     
#输入密码     
Please enter the following 'extra' attributes     
to be sent with your certificate request     
A challenge password []:     
#可选的公司名称     
An optional company name []:

安装harbor

1.将harbor-offline-installer-v1.5.1.tgz上传到/data/harbor

代码语言:javascript
复制
$ tar zxvf harbor-offline-installer-v1.5.1.tgz     
$ mv harbor harbor1.5.1

$ cd /data/harbor/harbor1.5.1 2.修改harbor.cfg,如下内容,其他可以默认

代码语言:javascript
复制
hostname = 192.168.119.119     
ui_url_protocol = http   #如果选https则需要加载密钥     
ssl_cert = /data/cert/thomore.crt     
ssl_cert_key = /data/cert/thomore.key     
secretkey_path = /data/harbor/cert

3.修改docker-compose.yml,主要是自定义里面的volumes /data/registry database config等 注意:该文件中的secretkey文件所在目录

代码语言:javascript
复制
adminserver:     
    image: vmware/harbor-adminserver:v1.5.1     
    container_name: harbor-adminserver     
    env_file:     
      - ./common/config/adminserver/env     
    restart: always     
    volumes:     
      - /data/harbor/volume/config/:/etc/adminserver/config/:z     
      - /data/harbor/volume/secretkey:/etc/adminserver/key:z     
      - /data/harbor/volume/:/data/:z

必须要和harbor.cfg文件中的相一致,否则启动报错

代码语言:javascript
复制
secretkey_path = /data/harbor/volume

4.修改默认80端口 $ vi docker-compose.yml

代码语言:javascript
复制
proxy:     
    image: vmware/nginx-photon:v1.5.1     
    container_name: nginx     
    restart: always     
    volumes:     
      - ./common/config/nginx:/etc/nginx:z     
    networks:     
      - harbor     
    ports:     
      - 1080:80     
      - 443:443     
      - 4443:4443

$ vi common/templates/registry/config.yml

代码语言:javascript
复制
auth:     
  token:     
    issuer: harbor-token-issuer     
    realm: $public_url:1080/service/token

如果出现下面的错误说明该两处没有更改一致。

代码语言:javascript
复制
Error response from daemon: Get http://test.com:1080/v2/: received unexpected HTTP status: 503 Service Unavailable

5.执行准备脚本 $ ./prepare 6.执行安装脚本 $ ./install 7.等待完成即可。

代码语言:javascript
复制
✔ ----Harbor has been installed and started successfully.----     

Now you should be able to visit the admin portal at http://192.168.119.119 .      
For more details, please visit https://github.com/vmware/harbor .

登录与配置

页面登录

登录配置的页面

  • 用户:admin
  • 密码,见harbor.cfg配置文件中:
  • harboradminpassword = Harbor12345

管理员登录后,会看到如下模块:

  • 项目:新增/删除项目,查看镜像仓库,给项目添加成员、查看操作日志、复制项目等
  • 日志:仓库各个镜像create、push、pull等操作日志
  • 系统管理
    • 用户管理:新增/删除用户、设置管理员等
    • 复制管理:新增/删除从库目标、新建/删除/启停复制规则等
    • 配置管理:认证模式、复制、邮箱设置、系统设置等
  • 其他设置
    • 用户设置:修改用户名、邮箱、名称信息
    • 修改密码:修改用户密码

注意:非系统管理员用户登录,只能看到有权限的项目和日志,其他模块不可见。

新建项目

管理员登录->点击项目->点击+项目

设为不公开.

注意:当项目设为公开后,任何人都有此项目下镜像的读权限。命令行用户不需要“docker login”就可以拉取此项目下的镜像。

创建用户

1.管理员登录系统->点击系统管理->点击用户管理->点击+用户 2.填下如下信息,确定即可增加用户

3.分配该用户拥有刚才创建的项目dev的权限

  • 点击项目->点击dev->点击成员->点击+成员
  • 输入刚刚增加的用户dev1,并分配权限

客户端命令行登录

命令行登录: $ docker login 192.168.119.119 会报如下错误:

代码语言:javascript
复制
Error response from daemon: Get https://192.168.119.119/v1/users/: dial tcp 192.168.119.119:443: getsockopt: connection refused

此时,需要做如下配置: 1.加入私有仓库地址 $ vi /etc/docker/daemon.json 如下内容是多个私有仓库的配置

代码语言:javascript
复制
{     
    "insecure-registries": ["192.168.119.119","test.com:1080"]     
}

2.执行如下命令,重启docker

代码语言:javascript
复制
systemctl daemon-reload && service docker restart

配置完成后就可以登录了。

3.另外,daemon.json还可以加上镜像加速地址:

代码语言:javascript
复制
{     
  "registry-mirrors": ["http://harbor.test.com"], #镜像加速地址     
  "insecure-registries": ["harbor.test.com","192.168.119.119:1080"], #非SSL源管理镜像。     
  "max-concurrent-downloads": 10     
}

push/pull

现在,我们用刚刚创建的用户dev1,push我们的镜像ubuntu到dev项目 1.使用dev1用户登录

代码语言:javascript
复制
$ docker login 192.168.119.119     
Username (admin): dev1     
Password:      
Login Succeeded

2.给已有的镜像ubuntu,重新打tag

代码语言:javascript
复制
$ docker tag ubuntu 192.168.119.119/dev/ubuntu:v1

3.push镜像

代码语言:javascript
复制
$ docker push 192.168.119.119/dev/ubuntu:v1     
The push refers to a repository [192.168.119.119/dev/ubuntu]     
49907af65b0a: Mounted from ubuntu/ubuntu      
4589f96366e6: Mounted from ubuntu/ubuntu      
b97229212d30: Mounted from ubuntu/ubuntu      
cd181336f142: Mounted from ubuntu/ubuntu      
0f5ff0cf6a1c: Mounted from ubuntu/ubuntu      
v1: digest: sha256:48c25f0391322e4d9f32c4326c1ec37edb9663382afafa3e6cb20dc2a45be01e size: 1357

4.dev1用户登录系统后即可看到自己上传的镜像

harbor镜像删除与清理

Harbor私有仓库运行一段时间后,仓库中存有大量镜像,会占用太多的存储空间。直接通过Harbor界面删除相关镜像,并不会自动删除存储中的文件和镜像。需要停止Harbor服务,执行垃圾回收命令,进行存储空间清理和回收。 1.先在Harbor UI图形界面中删除不需要的镜像 2.停止Harbor相关服务

代码语言:javascript
复制
$ cd <harbor_dir>     
$ docker-compose stop

3.使用--dry-run参数运行容器,预览运行效果,但不删除任何数据 首先查看是否存在镜像vmware/registry-photon:v2.6.2-v1.5.1,不同版本会有不同的tag,否则会重新拉取最新的镜像.

代码语言:javascript
复制
$ docker run -it --name gc --rm --volumes-from registry vmware/registry-photon:v2.6.2-v1.5.1 garbage-collect --dry-run /etc/registry/config.yml

4.不使用--dry-run参数,将删除相关的文件和镜像

代码语言:javascript
复制
$ docker run -it --name gc --rm --volumes-from registry vmware/registry-photon:v2.6.2-v1.5.1 garbage-collect /etc/registry/config.yml

5.重新启动Harbor相关服务

代码语言:javascript
复制
$ docker-compose start

举报
领券