上一篇文章搭建了一個具備基礎功能,權限認證、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
,正在整理中,會在下篇文章體現,關注公衆號:「搜雲庫」 我會在微信公衆號首發