Docker搭建私有镜像仓库

docker搭建私有镜像仓库有两种办法,第一种用docker命令拉取docker registry,将docker的仓库镜像拉取到本地,在本地构建一个docker仓库,这种方法要自己对仓库进行权限管理,没有图形化页面操作,命令操作比较繁琐,另外在dockertoolbox下搭建私有镜像库出现的问题比较多,建议还是安装linux系统进行搭建。第二种集成harbor,docker-compose可以进行图形化页面仓库以及图形化权限管理,harbor也集成了mysql和log。下面具体介绍集成harbor,docker-compose图形化界面管理,集成过程中遇到不少坑,总结记录一下

搭建环境

  • docker 18.05.0-ce

  • ubuntu14.04(windows下可以安装VMware-workstation,利用VM搭建ubuntu环境)

  • docker-compose1.21.2

  • harbor v1.2.0

切换root用户:

 # sudo su

密码就是你创建用户的密码,输完自动切换到root账户下

 安装 vim

打开ubuntu命令终端,安装vim便于操作linux文件

# apt-get install vim

Docker搭建私有镜像仓库_第1张图片

安装 Docker

打开ubuntu命令终端,执行以下命令安装 Docker

# curl -fsSL https://get.docker.io | bash

安装 docker-compose

# yum install python-pip

# pip install docker-compose

经过验证,这种方式安装docker-compose速度最快

安装 Harbor

# wget -P /usr/local/src/ https://github.com/vmware/harbor/releases/download/v1.2.0/harbor-online-installer-v1.2.0.tgz

# tar zxf harbor-online-installer-v1.2.0.tgz -C /usr/local/

# cd /usr/local/harbor/

上面是先下载安装包再解压

安装完harbor后要对harbor.cfg这个文件进行修改,这个文件在harbor目录下,主要修改hostname(ip,域名)

harbor.cfg的配置样例解释如下:

## Configuration file of Harbor

#The IP address or hostname to access admin UI and registry service.
#DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.
# 指定 hostname,一般为IP,或者域名,用于登录 Web UI 界面
hostname = redg.mydomain.com

#The protocol for accessing the UI and token/notification service, by default it is http.
#It can be set to https if ssl is enabled on nginx.
# URL 访问方式,SSL 需要配置 nginx
ui_url_protocol = http

#Email account settings for sending out password resetting emails.
# 邮件相关信息配置,如忘记密码发送邮件
email_server = smtp.xxxxxx.com
email_server_port = 465
email_username = [email protected]
email_password = xxxxxx
email_from = docker 
email_ssl = true

##The password of Harbor admin, change this before any production use.
# 默认的 Harbor 的管理员密码,管理员用户名默认 admin
harbor_admin_password = Harbor12345

##By default the auth mode is db_auth, i.e. the credentials are stored in a local database.
#Set it to ldap_auth if you want to verify a user's credentials against an LDAP server.
# 指定 Harbor 的权限验证方式,Harbor 支持本地的 mysql 数据存储密码,同时也支持 LDAP
auth_mode = db_auth

#The url for an ldap endpoint.
# 如果采用了 LDAP,此处填写 LDAP 地址
ldap_url = ldaps://ldap.mydomain.com

#The basedn template to look up a user in LDAP and verify the user's password.
# LADP 验证密码的方式(我特么没用过这么高级的玩意)
ldap_basedn = uid=%s,ou=people,dc=mydomain,dc=com

#The password for the root user of mysql db, change this before any production use.
# mysql 数据库 root 账户密码
db_password = root123

#Turn on or off the self-registration feature
# 是否允许开放注册
self_registration = on

#Turn on or off the customize your certicate
# 允许自签名证书
customize_crt = on

#fill in your certicate message
# 自签名证书信息
crt_country = CN
crt_state = State
crt_location = CN
crt_organization = mritd
crt_organizationalunit = mritd
crt_commonname = mritd.me
crt_email = reg.mritd.me
#####

根据自己需求修改配置信息,注意hostname修改完后,要在/etc/hosts目录下对hostname域名进行映射

生成相关配置

# cd /usr/local/harbor/

# ./prepare

执行安装脚本

# cd /usr/local/harbor/

# ./install.sh

Docker搭建私有镜像仓库_第2张图片

Docker搭建私有镜像仓库_第3张图片

正常安装成功后会有 5 个 Contianer :

  • Proxy : 由Nginx 服务器构成的反向代理
  • Registry : 由Docker官方的开源registry 镜像构成的容器实例
  • UI : 即架构中的core services, 构成此容器的代码是Harbor项目的主体
  • Mysql : 由官方MySql镜像构成的数据库容器
  • Log : 运行着rsyslogd的容器,通过log-driver的形式收集其他容器的日志

这几个 Contianer 通过 Docker link 的形式连接在一起,在容器之间通过容器名字互相访问。对终端用户而言,只需要暴露 proxy(即Nginx)的服务端口

访问测试

对host域名进行访问测试,登录账号密码在harbor.cfg设置,默认为admin    Harbor12345。harbor.cfg里设置了self_registration = on可以进行账号开放注册,设置off就只能管理员进行账号分配

Docker搭建私有镜像仓库_第4张图片

上传下载都要先进行登录操作,否则会报错

登录

登录命令操作为

# docker login +访问的hostname

退出登录:

# docker logout +访问的hostname

Docker搭建私有镜像仓库_第5张图片

创建项目

Docker搭建私有镜像仓库_第6张图片

下面private可以勾选是否公有项目还是私有项目

Push镜像到仓库创建的项目

# docker push 域名/项目名/镜像名

Docker搭建私有镜像仓库_第7张图片

上面我从docker拉取了一个测试镜像busybox,对该镜像进行了重新tag

注意push的tag必须格式为:域名/项目名/镜像名,否则会push报错,上面我成功push了busybox到demo上面,我们在图形化终端harbor里面查看一下我push的镜像:

Docker搭建私有镜像仓库_第8张图片

Pull镜像到本地

# docker pull 域名/项目名/镜像名

Docker搭建私有镜像仓库_第9张图片

可以看到我成功pull刚刚提交的项目

 

你可能感兴趣的:(javaweb)