Docker 私有倉庫搭建,Shipyard管理器部署

前提

使用 Docker Hub 可以解決大部分問題,但有時候我們也會有自己私有的鏡像,且 Docker Hub 網速也是個問題,所以搭建一個私有的內部的倉庫必不可少。
搭建私有倉庫的優點 :

  • 節省網絡帶寬,提升Docker部署速度,不用每個鏡像從DockerHub上去下載,只需從私有倉庫下載就可
  • 私有鏡像,包含公司敏感信息,不方便公開對外,只在公司內部使用

docker-registry 是官方提供的工具,可以用於構建私有的鏡像倉庫。本文內容基於 docker-registry v2.x 版本。

1、 搭建私有倉庫

1.1 查找合適的鏡像

docker search registry --filter=stars=100

--filter=stars=100 表示過濾掉星數低於100

官方鏡像

1.2 安裝鏡像

docker pull registry

1.3 啓動鏡像

docker run -d -p 5000:5000 --restart=always --name=registry-srv -v /opt/docker/registry:/var/lib/registry registry

參數解釋

  • -d 後臺運行
  • -p 將容器的5000端口映射到宿主機的5000端口
  • --restart docker服務重啓後總是重啓此容器
  • --name 容器的名稱
  • -v 將容器內的/var/lib/registry映射到宿主機的/opt/docker/registry目錄

1.4 允許http訪問

Docker 默認不允許非HTTPS 方式推送鏡像。我們可以通過 Docker 的配置選項來取消這個限制,或者查看下一節配置能夠通過 HTTPS 訪問的私有倉庫
修改/etc/docker/daemon.json 添加私有倉庫地址

{
"registry-mirrors":[
		"http://f1361db2.m.daocloud.io"
	],
"insecure-registries": [
    "http://192.168.18.30:5000"
  ]
}

該文件必須符合 json 規範,否則 Docker 將不能啓動
registry-mirrors 配置加速地址
insecure-registries 配置非httpshub的地址

2、搭建WEB管理工具

搭建一個web服務,查看倉庫裏的鏡像,查看修改image比較方便;docker web 管理工具比較多,比如shipyarddocker ui 等,這裏使用shipyard管理工具

2.1 安裝

2.1.1 shipyard依賴安裝

rethinkdb
deploy首先啓動的就是RethinkDB容器,shipyard採用RethinkDB作爲數據庫來保存用戶等信息

docker pull rethinkdb

microbox/etcd
爲了使用Swarm,我們需要一個外部的密鑰值存儲羣容器,shipyard默認是採用了etcd

docker pull microbox/etcd

shipyard/docker-proxy
默認情況下,Docker引擎只監聽Socket,我們可以重新配置引擎使用TLS或者使用一個代理容器,轉發請求從TCPDocker監聽的UNIX Socket

docker pull shipyard/docker-proxy

swarm
Swarm管理器,和設置代理

docker pull swarm

shipyard/shipyard
shipyard控制器,Remote API的實現和web的實現。

docker pull shipyard/shipyard

2.2.2 啓動依賴

注意啓動順序

  • 啓動數據存儲
docker run \
    -ti \
    -d \
    --restart=always \
    --name shipyard-rethinkdb \
    rethinkdb
  • 啓動Discovery
docker run \
    -ti \
    -d \
    -p 4001:4001 \
    -p 7001:7001 \
    --restart=always \
    --name shipyard-discovery \
    microbox/etcd -name discovery
  • 啓動代理
docker run \
    -ti \
    -d \
    -p 2375:2375 \
    --hostname=$HOSTNAME \
    --restart=always \
    --name shipyard-proxy \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -e PORT=2375 \
    shipyard/docker-proxy:latest

$HOSTNAME 會獲取系統變量

  • 啓動Swarm Manager
docker run \
    -ti \
    -d \
    --restart=always \
    --name shipyard-swarm-manager \
    swarm:latest \
    manage --host tcp://0.0.0.0:3375 etcd://<IP-OF-HOST>:4001

注意 <IP-OF-HOST> 改成自己的,是shipyard部署機的IP

  • 啓動 Controller
docker run \
    -ti \
    -d \
    --restart=always \
    --name shipyard-controller \
    --link shipyard-rethinkdb:rethinkdb \
    --link shipyard-swarm-manager:swarm \
    -p 8080:8080 \
    shipyard/shipyard:latest \
    server \
    -d tcp://swarm:3375

在瀏覽器輸入: http://127.0.0.1:8080
默認賬號:admin
默認密碼:shipyard
在這裏插入圖片描述

可以採用一鍵部署的方式 參考 Shipyard Automated

curl -sSL https://shipyard-project.com/deploy | bash -s -- -h

注意

-sSLSSL 連接,若不支持 改成 -s 即可

非一鍵安裝模式 參考
官方教程
shipyard安裝

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章