通過Docker Cloud部署應用
如果您在生產環境中使用Docker Community Edition的效果還不錯,可以使用Docker Cloud來幫助管理Amazon Web Services、DigitalOcean和Microsoft Azure等主流服務提供商的應用程式。
設定和部署流程是:將Docker Cloud與您的首選提供商連線,授予Docker Cloud許可權,為您自動配置和Dockerize虛擬機器;使用Docker Cloud建立您的計算資源並建立您的叢集;部署您的應用程式。
連線Docker Cloud
可以在標準模式或叢集模式下執行Docker Cloud。如果在標準模式下執行Docker Cloud,按照以下說明將您的服務提供商連線到Docker Cloud:
如果您在叢集模式下執行,請繼續看下面的內容。
建立叢集
- 如果使用的是Amazon Web Services(AWS),則可以在AWS上自動建立一個叢集。
- 如果使用的是Microsoft Azure,則可以在Azure上自動建立一個叢集。
- 否則,在Docker Cloud UI中建立您的節點,並通過Docker Cloud執行
docker swarm init
和docker swarm join
命令。最後,通過點選螢幕頂部的“enable Swarm Mode”,並註冊建立的叢集。
在雲提供商上部署應用程式
首先通過Docker Cloud連線到你的叢集,從叢集模式的Docker Cloud的web介面中,選擇頁面頂部的“Swarms”,單擊要連線的叢集,然後將給定的命令複製貼上到命令列終端中。
或者,在Docker for Mac或Docker for Windows上,您可以通過桌面選單直接連線到叢集。
無論哪種方式,都將開啟一個終端,其上下文是您的本地機器,但其Docker命令會路由到您的雲服務提供商上執行的叢集。您可以直接訪問本地檔案系統和遠端叢集,從而啟用純粹的Docker命令。
執行docker stack deploy -c docker-compose.yml getstartedlab
在雲託管叢集上部署應用程式。
$ docker stack deploy -c docker-compose.yml getstartedlab
現在您的應用正在您的雲提供商上執行。
執行一些命令來驗證部署
您可以使用swarm命令來瀏覽和管理叢集,例如使用docker node ls
列出節點:
$ docker node ls
使用docker service ls
列出服務:
$ docker service ls
使用docker service ps <service>
檢視服務的任務:
$ docker service ps vy7n2piyqrtr
在雲供應商的機器上開放服務埠
此時,您的應用程式將作為雲提供商伺服器上的一個叢集進行部署,正如剛剛執行的docker命令所證明的那樣,但是,您仍然需要開啟雲伺服器上的埠,以便:
- 允許在工作節點上的
redis
服務和web
服務之間進行通訊。 - 允許入站流量到工作節點上的
web
服務,以便從Web瀏覽器訪問Hello World和Visualizer。 - 允許執行管理器的伺服器上的入站SSH流量(可能已經在雲提供商上設定)
這些是您需要為每項服務公開的埠:
Service | Type | Protocol | Port |
---|---|---|---|
web | HTTP | TCP | 80 |
visualizer | HTTP | TCP | 8080 |
redis | TCP | TCP | 6379 |
迭代和清理
通過更改docker-compose.yml
檔案來擴充套件應用程式,並使用docker stack deploy
命令即時重新部署。通過編輯程式碼更改應用程式的行為,然後重新構建,推送新的映象。也可以用docker stack rm
清理堆疊,例如:
$ docker stack rm getstartedlab
與您在本地Docker虛擬機器上執行叢集的場景不同,您的叢集以及部署在其上的所有應用程式都將繼續在雲伺服器上執行,無論您是否關閉本地主機。