在shipyard中添加registry 一直報(bào)失敗,嘗試了好幾種方式甜癞,最終結(jié)論是:shipyard不支持registry v2纤垂。
感謝 hailwind提到的可以自己編譯矾策,并且給出了相應(yīng)的步驟。
因在編譯的過程中遇到了些坑洒忧,梳理后記錄一下蝴韭。
下載支持registry v2的shipyard代碼
地址:https://github.com/computerlyrik/shipyard/tree/registry-v2/
可用git clone url ,也可直接下載zip包編譯shipyard-build鏡像
cd shipyard
mv Dockerfile.build Dockerfile
docker build -t shipyard-builder .
- 啟動(dòng)shipyard-build 鏡像
docker run -it shipyard-builder sh
當(dāng)以這樣的方式啟動(dòng)容器后熙侍,執(zhí)行````docker build -t shipyard-registry-v2 controller ``` 時(shí)就會(huì)報(bào)如下錯(cuò)誤
Sending build context to Docker daemon
Post http:///var/run/docker.sock/v1.19/build?cgroupparent=&cpuperiod=0&cpuquota=0&cpusetcpus=&cpusetmems=&cpushares=0&dockerfile=Dockerfile&memory=0&memswap=0&rm=1&t=shipyard-registry-v2: dial unix /var/run/docker.sock: no such file or directory. Are you trying to connect to a TLS-enabled daemon without TLS?
應(yīng)換可使用硬件資源的方式啟動(dòng)榄鉴,然后重新裝docker
docker run -ti --privileged shipyard-builder2 /bin/bash
apt-get install curl
## 安裝 docker
curl -sSL https://get.docker.com/ | sh
service docker start
docker build -t shipyard-registry-v2 controller
docker build -t shipyard-registry-v2 controller
第一次執(zhí)行該命令時(shí),遇到一個(gè)錯(cuò)誤 在ADD controller /bin/controller
時(shí)報(bào)說 沒有 controller這個(gè)文件或目錄
在Dockerfile本身就在controller目錄下面蛉抓,確實(shí)不存在 controller文件庆尘。
- 找尋controller
從可用shipyard的 /bin/目錄下 找到了 controller文件。
學(xué)習(xí)了一下怎么從容器中拷貝文件到宿主機(jī)上
docker cp <containerId>:/bin/controller /root/registry/
- 再次啟動(dòng)shipyard-build容器巷送,并掛載目錄
為的就是將 宿主機(jī)上的 controller 能拷貝進(jìn)容器中驶忌。
docker run -ti --privileged -v /root/registry/:/root/registry shipyard-builder /bin/bash
cp /root/registry/controller ./controller/
#但是事實(shí)證明,這樣是沒有用的笑跛,controller 需要自己生成付魔,第二次build時(shí) 就生成啦,但原因是什么沒有找到飞蹂。
service docker start
#之前安裝docker鏡像記得保存几苍,不然又要安裝docker啦。
docker build -t shipyard-registry-v2 controller
- 啟動(dòng)自編譯的shipyard-contrller
docker run -ti -d --restart=always --name shipyard-controller2 --link shipyard-rethinkdb:rethinkdb --link shipyard-swarm-manager:swarm -p 58081:8080 shipyard-registry-v2:latest server -d tcp://swarm:3375
-
登錄shipyard 陈哑,添加 registry
shipyard-registry.jpg
在添加倉庫這里犯了一個(gè)低級的錯(cuò)誤妻坝,因之前裝了portus-且portus是自動(dòng)裝了registry的,我一直用 portus啟動(dòng)的registry 往shipyard中添加--導(dǎo)致一直需要出現(xiàn)認(rèn)證失敗惊窖。
翻看了shipyard 的api,發(fā)現(xiàn)官方接口文檔中根本就沒有用戶名和密碼 這兩參數(shù)-才想起 應(yīng)該是portus需要登錄驗(yàn)證的刽宪,而不是registry本身。
于是單個(gè)裝了registry界酒,再往shipyard中添加 就ok 啦圣拄。 后記
過了個(gè)國慶后,發(fā)現(xiàn)shipyard沒有圖形界面啦毁欣,查看源代碼得知無bower_components目錄下所有的js售担。
- 進(jìn)入容器,發(fā)現(xiàn)static目錄下缺失無bower_components目錄
- 查看shipyard-registry-v2的源代碼 也確實(shí)沒有找到 bower_components目錄
- 去原來的shipyard中查找 看到 bower_components
- 于是再次做鏡像署辉,以當(dāng)前兼容v2的鏡像為源,將 bower_components目錄添加到static 目錄下
FROM shipyard-registry-v2
ADD ./test /static/
#test目錄下是bower_components
- 啟動(dòng)編譯后的鏡像岩四,shipyard可看到圖形界面啦哭尝。
存在疑問:為什么國慶前訪問時(shí)OK的呢?實(shí)在是讓我覺得費(fèi)解剖煌。