部署屬於自己的 Play-with-Docker (PWD)空間


Play with Docker(PWD)是由 Marcos Liljedhal 和 Jonathan Leibiusky 鑽研構思出來並由 Docker Inc. 贊助的開源專案。

PWD 提供給一般使用者一個悠遊學習Docker的操場,允許使用者敏捷的執行各種Docker命令,且可以在瀏覽器中輕易的建立和運行多個Docker容器,甚至可以在Docker Swarm模式下創建cluster. 事實上,PWD使用 Alpine Linux 為基礎的container,以Docker-in-Docker(DinD)提供使用者貌似有多個 VM/PC 同時在運行的體驗。Docker-in-Docker(DinD)簡單來說就是在一個 Docker container 環境內運行一個新的 Docker 實體。Play with Docker(PWD)運用了這樣的技術來模擬多個 VM 節點運行的效果。在這樣的模擬環境下,跑一些不會消耗太多資源的小應用還是可以的。真正大規模的應用程式部署運行,還是要找實際的 Data Center 來做才好。

只要能夠上網,透過Play with Docker(PWD)網站來練習Docker命令很方便。但有些時候,如果Internet網路連接有問題,或有時候正好碰到Play with Docker(PWD)網站比較多人在使用導致延遲無法順利連接,怎麼辦呢?

可以下載源代碼,在自己的電腦上建置一個一模一樣的Play with Docker(PWD),當想要用的時候就可以建置部署,不要用的時候就撤掉不會浪費電腦資源。

經過多次實驗,下面內容是自己整理出來的可行做法。

作業系統環境: Ubuntu 16.04
Docker 引擎版本:Docker EE 17.06


安裝 go-lang
$ apt update; apt install golang-go  

取得 play with docker 代碼

$ git clone https://github.com/play-with-docker/play-with-docker.git 

在原代碼目錄 play-with-docker 下,建立目錄

$ cd play-with-docker && mkdir -p ~/.go ~/.go/bin ~/.go/src ~/bin 

建立環境變數

$ export GOPATH=$GOPATH/.go

$ export PATH=$GOPATH/bin:$PATH 

下載並安裝 golang dep 工具

$ curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh 

下載並安裝 docker-compose

$ curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
$ chmod +x /usr/local/bin/docker-compose 

初始化 swarm cluster

$ docker swarm init 

下載並安裝PWD所需golang套件內容

$ go get -v -d -t ./...   

$ dep ensure

部署運行

$ docker-compose up

接着,通過瀏覽器打開 http://localhost , 可以看到PWD登入首頁。運行結果以及使用方式大致跟 https://labs.play-with-docker.com/ 幾乎一樣。

結語:
(1)上述建置流程應可再精簡
(2)docker-compose 工具的安裝使用應可不需要,但是要修改源代碼中的 docker-compose.yml 內容,之後另文詳述
(3)play-with-k8s網站也是由play-with-docker源代碼修改延伸出來,play-with-k8s同樣有docker引擎,但另外安裝了kubeadm/kubectl工具
(4)除了PWD,Docker-in-Docker(DinD)在其他場合也會運用到,也是在容器化環境中 CI 的一把鑰匙,掌握的好可以做進一步做更多的應用,但過度濫用也不是件好事。之後會再介紹。



【參考資料】

https://github.com/jpetazzo/dind


留言

這個網誌中的熱門文章

Docker 環境下的 Proxy 配置