docker私有仓库搭建 - Go语言中文社区

docker私有仓库搭建


         使用docker构建了较多的镜像时,为了方便镜像的管理需要将镜像推到镜像仓库中,由于公共镜像仓库由于安全性及网络限制;此时,可以自己搭建docker仓库。

一、使用docker registry搭建docker仓库

1、使用docker registry rpm包构建docker镜像仓库

(1)使用yum安装docker retistry

# 先安装epel仓库    
]# yum install epel-release
# 安装docker registry,真是的安装包为docker-distribution
]# yum install docker-registry
# 查看安装后生成文件
]# rpm -ql docker-distribution
/etc/docker-distribution/registry/config.yml
/usr/bin/registry
/usr/lib/systemd/system/docker-distribution.service
/usr/share/doc/docker-distribution-2.6.2
/usr/share/doc/docker-distribution-2.6.2/AUTHORS
/usr/share/doc/docker-distribution-2.6.2/CONTRIBUTING.md
/usr/share/doc/docker-distribution-2.6.2/LICENSE
/usr/share/doc/docker-distribution-2.6.2/MAINTAINERS
/usr/share/doc/docker-distribution-2.6.2/README.md
/var/lib/registry

(2)配置registry

         Docker registry安装完成后的配置文件为/etc/docker-distribution/registry/config.yml,主要的配置选项如下:

version: 0.1
log:
  fields:
    service: registry
storage:
    cache:
        layerinfo: inmemory
    filesystem:
        rootdirectory: /var/lib/registry
http:
    addr: :5000

         在配置文件中rootdirectory为镜像的存放目录,addr为该服务监听的端口地址。

(3)启动docker registry

# 设置docker registry服务开机自启动
]# systemctl enable docker-distribution
# 启动docker registry
]# systemctl start docker-distribution

(4)上传镜像验证

         由于docker默认不支持http协议,自己单间的证书在没有配置https证书时均使用http协议,所以需要配置使docker客户端支持http协议,配置如下:

]# cat /etc/docker/daemon.json 
{
  "insecure-registries": ["http://192.168.16.160:5000"]
}

         配置docker支持客户端后,就可以将自建的docker镜像上传至自建的docker仓库中。

# 对创建的docker进行打标签
]# docker tag test_dayi123:v0.12 192.168.16.160:5000/test/test:v0.1
# 上传镜像
]# docker push 192.168.16.160:5000/test/test:v0.1

2、基于容器构建docker私有仓库

         基于容器构建docker私有仓库也非常简单,只需要一条命令就可以搭建

# 基于容器构建docker私有仓库
]# docker run -d -p 5000:5000 --restart=always --name registry registry

         使用docker容器构建docker仓库时,也可将配置文件及仓库目录挂在到宿主机上,方便配置管理。使用docker容器构建的registry仓库的使用方法同yun安装的使用方法相同。

3、配置TLS证书

         在运行了registry服务后,在没有更改客户端配置文件及配置证书时上传镜像时会报错,而证书可以从第三方代理机构去申请,也可自己生成。使用自定义的证书配置如下:

# 生成证书,生成证书时需要填写相关信息,”Common Name”为配置证书的域名
]# mkdir certs
]# openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/myrepo.key -x509 -days 365 -out certs/myrepo.crt
# 将用户证书放置到相应位置
]# cp certs/myrepo.crt /etc/docker/certs.d/dayi123.com:5000/
# 基于容器创建registry服务是使用证书
]# docker run -d -p 5000:5000 --restart=always --name registry -v /root/certs:/certs -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/myrepo.crt -e REGISTRY_HTTP_TLS_KEY=/certs/myrepo.key registry

二、使用harbor搭建docker仓库

         我们使用docker官方提供的docker registy来管理镜像时,只能通过命令上传下载镜像,并不能像dockerhub及阿里docker仓库那样可以通过web页面管理浏览镜像;harbor正好提供了类似的功能。

         Harbor是由vmware中国团队开发的一款镜像仓库,harbor是基于docker官方的registry的基础提供用户权限管理、镜像复制等功能,提高使用的registry的效率。Harbor的githubdi地址为(https://github.com/goharbor/harbor)

1、harbor的安装

         Harbor的安装可以使用在线安装,离线安装及OVA安装,在线安装是使用docker官方的容器编排工具docker-compose安装,使用docker-compose的方式安装简单方便。

(1)安装前环境准备

         安装主机配置要求要求

设备

最小

建议配置

CPU

minimal 2 CPU

4 CPU is preferred

Mem

minimal 4GB

8GB is preferred

Disk

minimal 40GB

160GB is preferred

         安装前环境准备:

# 安装docker及docker-compose
]# yum install docker-ce
]# yum install docker-compose

(2)下载harbor

# 下载harbor
]# wget https://storage.googleapis.com/harbor-releases/release-1.6.0/harbor-offline-installer-v1.6.3.tgz
]# tar -xf harbor-offline-installer-v1.6.3.tgz
]# cd harbor

(3)配置harbor

         解压完成后,在解压目录中的主要配置文件有harbor.cfg(harbor的配置文件),docker-compose.yml(docker-compose容器编排配置文件)。Harbor主要的配置内容为:

# 版本
_version = 1.6.0
# 主机名
hostname = 192.168.17.160
# 使用的协议
ui_url_protocol = http
# 最大的连接数
max_job_workers = 3
# 证书相关配置
customize_crt = on
ssl_cert = /data/cert/server.crt
ssl_cert_key = /data/cert/server.key
secretkey_path = /data
# 日志切割相关配置
log_rotate_count = 50
log_rotate_size = 200M
# 配置邮箱
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
email_insecure = false
# admin用户登录密码
harbor_admin_password = test@123
# 数据库相关配置
db_host = postgresql
db_password = root123
db_port = 5432
db_user = postgres

(3)安装harbor

         修改完配置后,直接运行install.sh脚本可完成harbor的安装。

         Harbor的安装是将harbor需要运行的各个组件通过docker-comose编排工具完成下载运行。

# 安装harbor
]# ./install.sh
# 运行harbor,主要运行了以下容器
]# docker images
REPOSITORY                      TAG                
goharbor/chartmuseum-photon     v0.7.1-v1.6.3      
goharbor/harbor-migrator        v1.6.3             
goharbor/redis-photon           v1.6.3             
goharbor/clair-photon           v2.0.6-v1.6.3      
goharbor/notary-server-photon   v0.5.1-v1.6.3      
goharbor/notary-signer-photon   v0.5.1-v1.6.3      
goharbor/registry-photon        v2.6.2-v1.6.3      
goharbor/nginx-photon           v1.6.3             
goharbor/harbor-log             v1.6.3             
goharbor/harbor-jobservice      v1.6.3             
goharbor/harbor-ui              v1.6.3             
goharbor/harbor-adminserver     v1.6.3             
goharbor/harbor-db              v1.6.3       
2、harbor应用

(1)harbor的使用

         harbor安装完成后,既可以通过命令行去上传下载镜像,也可通过web界面登录。安装完成登录后后的web界面登录如下:

 

 

       安装完成后,可通过web页面登录创建用户,创建项目等操作。

(2)上传镜像到harbor仓库

         在没有配置https时,harbor仓库默认使用的是http协议;为了让docker客户端支持http,同样也需要更改docker客户端的配置文件:

# 使docker客户端支持http协议
]# cat /etc/docker/daemon.json 
{
  "insecure-registries": ["http://192.168.17.160:5000"]
}

         配置好客户端支持http并登陆后后就可以上传镜像了。在上传镜像前需要在harbor中创建好相应的仓库。

# 登陆harbor
]# docker login http://192.168.17.160 -udayi123
# 为镜像打标签
]# docker tag busybox:latest 192.168.17.160/test01/test-01:v0.1
# 上传镜像,已经创建好了test01仓库
]# docker push 192.168.17.160/test01/test-01:v0.1

(3)harbor服务的管理。

         Harbor服务是通过docker-compose容器编排工具安装,依赖了多个容器服务;harbor的管理也可以通过docker-compose命令来管理。执行docker-compose命令需要在docker-compose.ym文件所在目录下执行。

# 停止harbor
]# docker-compose stop
# 启动harbor 
]# docker-compose start

 

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/dayi_123/article/details/85232050
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2019-10-27 18:33:29
  • 阅读 ( 881 )
  • 分类:docker

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢