Docker Registry
Registry是一个无状态,高度可扩展的服务器端应用程序,用于保存docker镜像,包括镜像的层次结构和元数据,除了使用官方的Docker Hub,生产环境部署在公有云环境的可使用云平台厂商提供的镜像服务,例如阿里云容器镜像服务,使用私有云的企业一般自建Registry。
- Sponsor Registry:第三方的registry,供客户和Docker社区使用
- Mirror Registry:第三方的registry,只让客户使用
- Vendor Registry:由发布Docker镜像的供应商提供的registry
- Private Registry:通过设有防火墙和额外的安全层的私有实体提供的registry
docker-distribution用于构建docker仓库私服
[root@DQ ~]# yum info docker-distribution
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* epel: mirrors.yun-idc.com
* ius: mirrors.tuna.tsinghua.edu.cn
可安装的软件包
名称 :docker-distribution
架构 :x86_64
版本 :2.6.2
发布 :2.git48294d9.el7
大小 :3.5 M
源 :extras/7/x86_64
简介 : Docker toolset to pack, ship, store, and deliver content
网址 :https://github.com/docker/distribution
协议 : ASL 2.0
描述 : Docker toolset to pack, ship, store, and deliver content
默认distribution搭建的仓库没有安全认证机制,可以借助nginx来实现安全认证
Docker private Registry的Nginx反代配置方式:
client_max_body_size 0;
location / {
proxy_pass http://registrysrvs;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_redirect off;
proxy_buffering off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
auth_basic "Docker Registry Service";
auth_basic_user_file "/etc/nginx/.ngxpasswd";
}
Docker-distribution配置文件格式详细信息:
https://docs.docker.com/registry/configuration/#list-of-configuration-options
Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源Docker Distribution。作为一个企业级私有Registry服务器,Harbor提供了更好的性能和安全。提升用户使用Registry构建和运行环境传输镜像的效率。Harbor支持安装在多个Registry节点的镜像资源复制,镜像全部保存在私有Registry中, 确保数据和知识产权在公司内部网络中管控。另外,Harbor也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。
Harbor依赖docker-compose,Docker-Compose项目是Docker官方的开源工具, 通过在YAML文件中定义定义和运行多容器Docker应用程序,实现对Docker容器集群的快速编排,可以使用单个命令根据yaml文件创建并启动所有服务。Docker-Compose将所管理的容器分为三层,分别是project,服务service以及容器container。
- 服务 ( service ):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例
- 项目 ( project ):由一组关联的应用容器组成的一个完整业务单元,在 dockercompose.yml 文件中定义。
Compose 可以通过 Python 的包管理工具 pip 进行安装,也可以直接下载编译好的二进制文件使用,或者直接在 Docker 容器中运行。https://docs.docker.com/compose/install
harbor v1.7.0 offline安装包 链接: https://pan.baidu.com/s/15bxdQ3WTMNz74rVuiSXdqA 提取码: 53im
下载解压后,修改配置文件,执行./install.sh
Harbor服务就会根据当期目录下的docker-compose.yml开始下载依赖的镜像,检测并按照顺序依次启动各个服务
harbor.conf配置
## Configuration file of Harbor
# hostname设置访问地址,可以使用ip、域名,不可以设置为127.0.0.1或localhost
hostname = 172.16.10.144 #其他客户端可以与registry服务器通信的地址
# 访问协议,默认是http,也可以设置https,如果设置https,则nginx ssl需要设置on
ui_url_protocol = http
# mysql数据库root用户默认密码root123,实际使用时修改下
db_password = root123
max_job_workers = 3
customize_crt = on
ssl_cert = /data/cert/server.crt
ssl_cert_key = /data/cert/server.key
secretkey_path = /data
admiral_url = NA
# 邮件设置,发送重置密码邮件时使用
email_identity =
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后,管理员UI登录的密码,默认是Harbor12345
harbor_admin_password = Harbor12345
# 认证方式,这里支持多种认证方式,如LADP、本次存储、数据库认证。默认是db_auth,mysql数据库认证
auth_mode = db_auth
# LDAP认证时配置项
#ldap_url = ldaps://ldap.mydomain.com
#ldap_searchdn = uid=searchuser,ou=people,dc=mydomain,dc=com
#ldap_search_pwd = password
#ldap_basedn = ou=people,dc=mydomain,dc=com
#ldap_filter = (objectClass=person)
#ldap_uid = uid
#ldap_scope = 3
#ldap_timeout = 5
# 是否开启自注册
self_registration = on
# Token有效时间,默认30分钟
token_expiration = 30
# 用户创建项目权限控制,默认是everyone(所有人),也可以设置为adminonly(只能管理员)
project_creation_restriction = everyone
verify_remote_cert = on
启动harbor后登录push镜像
[root@master ~]# docker login http://172.16.10.144
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
[root@master ~]# docker tag nginx:1.7.9 172.16.10.144/onlinesvc/nginx:1.7.9
[root@master ~]# docker push 172.16.10.144/onlinesvc/nginx
onlinesvc是预先在web控制台创建好的项目,和dockerhub以及阿里云上的操作类似。
https://www.cnblogs.com/panwenbin-logs/p/10218099.html
https://www.cnblogs.com/senlinyang/p/8856975.html