使用 Docker Hub
能夠解決大部分問題,但有時候咱們也會有本身私有的鏡像,且 Docker Hub
網速也是個問題,因此搭建一個私有的內部的倉庫必不可少。
搭建私有倉庫的優勢 :web
Docker
部署速度,不用每一個鏡像從DockerHub
上去下載,只需從私有倉庫下載就可docker-registry
是官方提供的工具,能夠用於構建私有的鏡像倉庫。本文內容基於 docker-registry v2.x
版本。docker
docker search registry --filter=stars=100
--filter=stars=100
表示過濾掉星數低於100
的數據庫
docker pull registry
docker run -d -p 5000:5000 --restart=always --name=registry-srv -v /opt/docker/registry:/var/lib/registry registry
參數解釋json
-d
後臺運行-p
將容器的5000
端口映射到宿主機的5000
端口--restart
docker
服務重啓後老是重啓此容器--name
容器的名稱-v
將容器內的/var/lib/registry
映射到宿主機的/opt/docker/registry
目錄
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
配置非https
的hub
的地址bash
WEB
管理工具搭建一個web
服務,查看倉庫裏的鏡像,查看修改image
比較方便;docker
web
管理工具比較多,好比shipyard
、docker ui
等,這裏使用shipyard
管理工具網絡
rethinkdb
deploy
首先啓動的就是RethinkDB
容器,shipyard
採用RethinkDB
做爲數據庫來保存用戶等信息curl
docker pull rethinkdb
microbox/etcd
爲了使用Swarm
,咱們須要一個外部的密鑰值存儲羣容器,shipyard
默認是採用了etcd
tcp
docker pull microbox/etcd
shipyard/docker-proxy
默認狀況下,Docker
引擎只監聽Socket
,咱們能夠從新配置引擎使用TLS
或者使用一個代理容器,轉發請求從TCP
到Docker
監聽的UNIX Socket
svg
docker pull shipyard/docker-proxy
swarm
Swarm
管理器,和設置代理
docker pull swarm
shipyard/shipyard
shipyard
控制器,Remote API
的實現和web
的實現。
docker pull shipyard/shipyard
注意啓動順序
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
注意
-sSL
是SSL
鏈接,若不支持 改爲-s
便可
非一鍵安裝模式 參考
官方教程
shipyard安裝