上一篇文章搭建了一个具备基础功能,权限认证、TLS
的私有仓库,可是Docker Registry
做为镜像仓库,连管理界面都没有,甚至连一些运维必备的功能都是缺失的,还有什么 Docker
镜像仓库管理工具呢? 这里有一个简单好用的企业级 Registry
服务器 - Harbor
,推荐在生产环境上使用。python
Harbor
是VMware
公司开源的企业级Docker Registry
项目,其目标是帮助用户迅速搭建一个企业级的Docker registry
服务。linux
它以Docker
公司开源的registry
为基础,提供了管理UI
,基于角色的访问控制(Role Based AccessControl
),AD/LDAP
集成、以及审计日志(Auditlogging
) 等企业用户需求的功能,经过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源 Docker Distribution
。git
做为一个企业级私有 Registry
服务器,Harbor
提供了更好的性能和安全。提高用户使用 Registry
构建和运行环境传输镜像的效率。github
Harbor
支持安装在多个 Registry
节点的镜像资源复制,镜像所有保存在私有 Registry
中,确保数据和知识产权在公司内部网络中管控。另外,Harbor
也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。web
Harbor
是由 VMware
中国研发团队负责开发的开源企业级 Docker Registry
,不只解决了咱们直接使用 Docker Registry
的功能缺失,更解决了咱们在生产使用 Docker Registry
面临的高可用、镜像仓库直接复制、镜像仓库性能等运维痛点。redis
本文出现的全部:hub.ymq.io
域名。使用时候请替换成本身的域名spring
在部署私有仓库以前,须要在主机上安装Docker
。私有仓库是 registry images
,并在Docker
中运行。docker
我是用的vultr
的服务器,因此,下面操做,就不用配置国内的,加速镜像库,直接用Docker
官方的!shell
国内加速仓库,我其余文章有提到:Ubuntu 17.04 x64 安装 Docker CE 初窥 Dockerfile 部署 Nginx
www.ymq.io/2017/12/30/…ubuntu
使用存储库进行安装
1.更新apt
软件包索引:
$ sudo apt-get update
复制代码
2.装软件包以容许apt
经过HTTPS
使用存储库:
$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
复制代码
3.添加Docker
的官方GPG
密钥:
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
复制代码
4.使用如下命令来设置稳定的存储库
$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable"
复制代码
5.更新apt
软件包索引。
$ sudo apt-get update
复制代码
7.安装最新版本的Docker CE
$ sudo apt-get install docker-ce
复制代码
8.经过运行hello-world
映像验证是否正确安装了Docker CE
。
$ sudo docker run hello-world
复制代码
在Linux
上,您能够从GitHub
上的Compose
存储库版本页面下载Docker Compose
二进制文件。按照连接中的说明进行操做,即curl
在终端中运行命令如下载二进制文件。这些一步一步的说明也包括在下面。
GitHub
上的Compose
存储库版本页面下载地址:github.com/docker/comp…
1.运行此命令下载最新版本的Docker Compose
:
sudo curl -L https://github.com/docker/compose/releases/download/1.18.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
复制代码
2.对二进制文件应用可执行权限:
sudo chmod +x /usr/local/bin/docker-compose
复制代码
$ docker-compose --version
docker-compose version 1.18.0, build 8dd22a9
复制代码
apt-get install python3
apt-get install python-minimal
apt-get install python3-setuptools
easy_install3 pip
apt-get install python-argparse
复制代码
$ python --version
Python 2.7.13
$ pip -V
pip 9.0.1 from /usr/local/lib/python3.5/dist-packages/pip-9.0.1-py3.5.egg (python 3.5)
复制代码
acme.sh 实现了 acme 协议, 能够从 letsencrypt 生成免费的证书. https://github.com…
很简单就两个步骤:
acme.sh
安装很简单, 一个命令:
$ curl https://get.acme.sh | sh
复制代码
这条命令,会作的事情
1.把 acme.sh
安装到你的 home
目录下: 并建立 一个 bash
的 alias
, 方便你的使用: acme.sh=~/.acme.sh/acme.sh
2.自动为你建立 cronjob
, 天天 0:00
点自动检测全部的证书, 若是快过时了, 须要更新, 则会自动更新证书.
若是你尚未运行任何 web
服务, 且80
端口是空闲的, 那么 acme.sh
能伪装本身是一个webserver
, 临时听在80
端口, 完成验证:
**注意:**若是您使用的时候,请把,hub.ymq.io
替换成本身域名,此域名须要dns
解析到安装私有仓库的服务器IP
$ cd ~/.acme.sh/
$ apt-get install socat
$ sh acme.sh --issue -d hub.ymq.io --standalone
复制代码
若是看到以下信息,说明证书验证并生成成功,证书生成位置在:/root/.acme.sh/hub.ymq.io/
下
Success
Verify finished, start to sign.
Cert success.
-----BEGIN CERTIFICATE-----
复制代码
[Wed Jan 3 14:36:25 UTC 2018] Standalone mode.
[Wed Jan 3 14:36:25 UTC 2018] Registering account
[Wed Jan 3 14:36:27 UTC 2018] Registered
[Wed Jan 3 14:36:27 UTC 2018] ACCOUNT_THUMBPRINT='7TpUIE5N--hq2nhk2ruKmHBfgKB-LX-pBCkWzzmHzVM'
[Wed Jan 3 14:36:27 UTC 2018] Creating domain key
[Wed Jan 3 14:36:28 UTC 2018] The domain key is here: /root/.acme.sh/hub.ymq.io/hub.ymq.io.key
[Wed Jan 3 14:36:28 UTC 2018] Single domain='hub.ymq.io'
[Wed Jan 3 14:36:28 UTC 2018] Getting domain auth token for each domain
[Wed Jan 3 14:36:28 UTC 2018] Getting webroot for domain='hub.ymq.io'
[Wed Jan 3 14:36:28 UTC 2018] Getting new-authz for domain='hub.ymq.io'
[Wed Jan 3 14:36:29 UTC 2018] The new-authz request is ok.
[Wed Jan 3 14:36:29 UTC 2018] Verifying:hub.ymq.io
[Wed Jan 3 14:36:29 UTC 2018] Standalone mode server
[Wed Jan 3 14:36:34 UTC 2018] Success
[Wed Jan 3 14:36:34 UTC 2018] Verify finished, start to sign.
[Wed Jan 3 14:36:35 UTC 2018] Cert success.
-----BEGIN CERTIFICATE-----
MIIE9zCCA9+gAwIBAgISA6WV4ZFi6lr/kngVGx7/FoPMMA0GCSqGSIb3DQEBCwUA
******************************************
...
-----END CERTIFICATE-----
[Wed Jan 3 14:36:35 UTC 2018] Your cert is in /root/.acme.sh/hub.ymq.io/hub.ymq.io.cer
[Wed Jan 3 14:36:35 UTC 2018] Your cert key is in /root/.acme.sh/hub.ymq.io/hub.ymq.io.key
[Wed Jan 3 14:36:35 UTC 2018] The intermediate CA cert is in /root/.acme.sh/hub.ymq.io/ca.cer
[Wed Jan 3 14:36:35 UTC 2018] And the full chain certs is there: /root/.acme.sh/hub.ymq.io/fullchain.cer
复制代码
前提条件:域名的dns
解析到安装私有仓库的服务器IP
上
1.建立一个certs
目录。
$ cd /opt/
$ mkdir -p certs
复制代码
2.移动证书到certs
目录。
$ cd ~/.acme.sh/
$ sh acme.sh --installcert -d hub.ymq.io \
--key-file /opt/certs/hub.ymq.io.key \
--fullchain-file /opt/certs/fullchain.cer
复制代码
下载Harbour版本的二进制文件 github.com/vmware/harb…
目前最新版本 V1.3.0
$ wget https://storage.googleapis.com/harbor-releases/harbor-online-installer-v1.3.0.tgz
$ tar -zxvf harbor-offline-installer-v1.3.0-rc4.tgz
复制代码
$ cd harbor
$ vim harbor.cfg
复制代码
只需修改以下内容
hostname = hub.ymq.io
ui_url_protocol = https
customize_crt = off
ssl_cert = /opt/certs/fullchain.cer
ssl_cert_key = /opt/certs/hub.ymq.io.key
复制代码
参数解释
hostname = 主机名:目标主机的主机名,用于访问UI和注册表服务。它应该是目标机器的IP地址或彻底限定的域名(FQDN),例如198.13.48.154或 `hub.ymq.io`。不要使用localhost或127.0.0.1为主机名 - 注册表服务须要由外部客户端访问!
ui_url_protocol = (http或https,默认为http)用于访问UI和令牌/通知服务的协议。若是公证处于启用状态,则此参数必须为https。默认状况下,这是http。
customize_crt = (打开或关闭,默认打开)打开此属性时,准备脚本建立私钥和根证书,用于生成/验证注册表令牌。当由外部来源提供密钥和根证书时,将此属性设置为off
ssl_cert =SSL证书的路径,仅当协议设置为https时才应用
ssl_cert_key = SSL密钥的路径,仅当协议设置为https时才应用
复制代码
$ sudo ./install.sh
复制代码
若是一切正常,你应该能够打开浏览器访问http://hub.ymq.io
的管理门户(将hub.ymq.io
更改成在你的配置中的主机名harbor.cfg
)。请注意,默认的管理员用户名/密码是admin / Harbor12345
。
登陆管理员门户并建立一个新项目,例如myproject
。而后,您可使用docker命令来登陆和推送图像(默认状况下,注册表服务器在端口80
上侦听):
Username:admin
Password:Harbor12345
$ docker login hub.ymq.io
Username (testuser): admin
Password: 输入仓库密码
Login Succeeded
复制代码
从 Docker Hub
拉取 ubuntu:16.04
镜像
$ docker pull ubuntu:16.04
复制代码
将镜像标记为 hub.ymq.io/myproject
,在推送时,Docker
会将其解释为仓库的位置。
$ docker tag ubuntu:16.04 hub.ymq.io/myproject/my-ubuntu
复制代码
将镜像推送到本地镜像标记的仓库hub.ymq.io/myproject/
$ docker push hub.ymq.io/myproject/my-ubuntu
复制代码
在镜像列表:能够删除,复制,查看日志,及其余操做
删除本地缓存ubuntu:16.04
和hub.ymq.io/myproject/my-ubuntu
镜像,以便您能够测试从私有仓库中拉取镜像。这不会hub.ymq.io/myproject/my-ubuntu
从您的私有仓库中删除镜像。
$ docker image remove ubuntu:16.04
$ docker image remove hub.ymq.io/myproject/my-ubuntu
复制代码
拉取 hub.ymq.io
仓库的 /myproject/my-ubuntu
镜像。
root@souyunku:~# docker pull hub.ymq.io/myproject/my-ubuntu
Using default tag: latest
latest: Pulling from myproject/my-ubuntu
50aff78429b1: Pull complete
f6d82e297bce: Pull complete
275abb2c8a6f: Pull complete
9f15a39356d6: Pull complete
fc0342a94c89: Pull complete
Digest: sha256:f871d0805ee3ce1c52b0608108dbdf1b447a34d22d5c7278a3a9dd78fc12c663
Status: Downloaded newer image for hub.ymq.io/myproject/my-ubuntu:latest
复制代码
root@souyunku:~# docker images hub.ymq.io/myproject/my-ubuntu
REPOSITORY TAG IMAGE ID CREATED SIZE
hub.ymq.io/myproject/my-ubuntu latest 00fd29ccc6f1 3 weeks ago 111MB
复制代码
官方文档: github.com/vmware/harb…
Docker Compose
是 Docker
官方编排(Orchestration
)项目之一,负责快速在集群中部署分布式应用。
一个使用Docker
容器的应用,一般由多个容器组成。使用Docker Compose
,再也不须要使用shell
脚原本启动容器。在配置文件中,全部的容器经过services
来定义,而后使用docker-compose
脚原本启动,中止和重启应用,和应用中的服务以及全部依赖服务的容器
Docker Compose 的搭建,及使用,发布 spring boot
整合redis
作访问计数demo
,实战 WordPress
,正在整理中,会在下篇文章体现,关注公众号:“搜云库” 我会在微信公众号首发