docker搭建私有镜像仓库有两种办法,第一种用docker命令拉取docker registry,将docker的仓库镜像拉取到本地,在本地构建一个docker仓库,这种方法要自己对仓库进行权限管理,没有图形化页面操作,命令操作比较繁琐,另外在dockertoolbox下搭建私有镜像库出现的问题比较多,建议还是安装linux系统进行搭建。第二种集成harbor,docker-compose可以进行图形化页面仓库以及图形化权限管理,harbor也集成了mysql和log。下面具体介绍集成harbor,docker-compose图形化界面管理,集成过程中遇到不少坑,总结记录一下
# sudo su
密码就是你创建用户的密码,输完自动切换到root账户下
打开ubuntu命令终端,安装vim便于操作linux文件
# apt-get install vim
打开ubuntu命令终端,执行以下命令安装 Docker
# curl -fsSL https://get.docker.io | bash
# yum install python-pip
# pip install docker-compose
经过验证,这种方式安装docker-compose速度最快
# 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
正常安装成功后会有 5 个 Contianer :
这几个 Contianer 通过 Docker link 的形式连接在一起,在容器之间通过容器名字互相访问。对终端用户而言,只需要暴露 proxy(即Nginx)的服务端口
对host域名进行访问测试,登录账号密码在harbor.cfg设置,默认为admin Harbor12345。harbor.cfg里设置了self_registration = on可以进行账号开放注册,设置off就只能管理员进行账号分配
上传下载都要先进行登录操作,否则会报错
登录命令操作为
# docker login +访问的hostname
退出登录:
# docker logout +访问的hostname
下面private可以勾选是否公有项目还是私有项目
# docker push 域名/项目名/镜像名
上面我从docker拉取了一个测试镜像busybox,对该镜像进行了重新tag
注意push的tag必须格式为:域名/项目名/镜像名,否则会push报错,上面我成功push了busybox到demo上面,我们在图形化终端harbor里面查看一下我push的镜像:
# docker pull 域名/项目名/镜像名
可以看到我成功pull刚刚提交的项目