性能环境之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,即需要如下操作:

$ mkdir –p /data/harbor/cert     
$ cd /data/harbor/cert

执行如下命令生成证书

$ 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

$ tar zxvf harbor-offline-installer-v1.5.1.tgz     
$ mv harbor harbor1.5.1

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

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文件所在目录

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文件中的相一致,否则启动报错

secretkey_path = /data/harbor/volume

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

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

auth:     
  token:     
    issuer: harbor-token-issuer     
    realm: $public_url:1080/service/token

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

Error response from daemon: Get http://test.com:1080/v2/: received unexpected HTTP status: 503 Service Unavailable

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

✔ ----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 会报如下错误:

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 如下内容是多个私有仓库的配置

{     
    "insecure-registries": ["192.168.119.119","test.com:1080"]     
}

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

systemctl daemon-reload && service docker restart

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

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

{     
  "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用户登录

$ docker login 192.168.119.119     
Username (admin): dev1     
Password:      
Login Succeeded

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

$ docker tag ubuntu 192.168.119.119/dev/ubuntu:v1

3.push镜像

$ 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相关服务

$ cd <harbor_dir>     
$ docker-compose stop

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

$ 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参数,将删除相关的文件和镜像

$ 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相关服务

$ docker-compose start

本文分享自微信公众号 - 7DGroup(Zee_7DGroup)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-08-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏SpringBoot

使用 Docker 部署 Spring Boot

Docker 技术发展为微服务落地提供了更加便利的环境,使用 Docker 部署 Spring Boot 其实非常简单,这篇文章我们就来简单学习下。

12520
来自专栏Ryan Miao

基于maven的项目脚手架,一键创建项目的项目模板

Springboot的出现极大的简化了项目开发的配置,然而,到真实使用的时候还是会有一堆配置需要设定。比如依赖管理,各种插件,质量扫描配置,docker配置,持...

16130
来自专栏千里行走

kubernetes-9:nginx-ingress容器化

如果可能,尽量用公有云提供的ingress-nginx支持,方便快捷易维护,且可以直接通过便宜方式挂载到公有云的SLB上。

29330
来自专栏千里行走

kubernetes-8:kibana容器化

http://toutiao.com/item/6699441606832947723/

14420
来自专栏边缘计算

推动边缘计算的七项核心技术

年前施巍松教授和其团队(张星洲、王一帆、张庆阳)应《计算机研究与发展》编辑部之邀,庆刊60周年发表论文,边缘计算社区经过和施巍松教授沟通,将论文整理成几篇,方便...

16920
来自专栏千里行走

kubernetes-2:helm实战-1:生产级别的elasticsearch集群部署

helm repo add elastic https://helm.elastic.co

55320
来自专栏爱编码

Docker|持续集成

在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。

34620
来自专栏Python研发

Centos7安装Docker

镜像是用来创建Docker容器的。一个镜像可以包含一个完整的操作系统环境和用户需要的其他应用程序,在Docker Hub里面有大量现成的镜像提供下载,Docke...

49520
来自专栏爱编码

Docker|基础篇

Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得 Docker 技术比虚拟机技术更为轻便...

33820
来自专栏finleyMa

docker学习系列20 工具推荐,dive 分析镜像层的工具

在 Docker 学习系列17 镜像和容器的导入导出 我讲过docker镜像是由一层层组成的 比如如下dockerfile文件

13620

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励