安裝 Docker。node
獲取第 3 部分先決條件中所述的 Docker Compose。web
獲取 Docker Machine,如第 4 部分先決條件中所述。redis
閱讀第 1 部分中的方向。docker
瞭解如何在第 2 部分中建立容器。windows
確保經過將friendlyhello
鏡像推送到註冊表來發布您建立的friendlyhello
鏡像。咱們在這裏那個使用共享鏡像。瀏覽器
確保鏡像用做於已部署的容器。運行此命令,在信息中鍵入username
, repo
, 和 tag
:docker run -p 80:80 username/repo:tag
,而後訪問http://localhost/
。服務器
獲取第 5 部分的 docker-compose.yml
的最終版本。 網絡
您一直在爲整個教程編輯相同的Compose文件。咱們有好消息,該Compose文件在生產環境中的工做方式與在您的計算機上同樣好。在本節中,咱們將介紹運行 Dockerized 應用程序的一些選項。ssh
Docker Enterprise 企業版的客戶運行了穩定、商業支持的 Docker Engine版本,做爲附加組件,他們獲得了咱們一流的管理軟件 ,Docker 數據中心。您可使用通用控制面板(Universal Control Plane)的界面管理應用程序的各個方面,使用 Docker 可信registry運行專用鏡像Registry,與 LDAP 提供程序集成,使用 Docker 內容信任對生產環境鏡像進行簽名,以及許多其餘特徵。tcp
將您本身的服務器引入 Docker Enterprise並設置 Docker 數據中心實際上須要兩個步驟:
注意:正在運行 Windows 容器?查看咱們的 Windows 服務器設置指南。
完成全部設置並運行 Docker 企業版後,能夠直接在 UI 中部署Compose文件。
以後,您能夠看到它正在運行,而且能夠更改您選擇的應用程序的任何方面,甚至編輯Compose文件自己。
在您選擇的平臺上查找 Docker Engine---Community的安裝說明。
運行 docker swarm init
在節點上建立一個swarm。
運行 docker stack deploy -c docker-compose.yml getstartedlab
,將應用部署在雲託管swarm上。
docker stack deploy -c docker-compose.yml getstartedlab
Creating network getstartedlab_webnet
Creating service getstartedlab_web
Creating service getstartedlab_visualizer
Creating service getstartedlab_redis
你的應用如今在雲提供商上運行。
您可使用swarm命令行(正如您所作的那樣)來瀏覽和管理swarm。下面是一些如今應該看起來熟悉的示例:
使用 docker node ls
列出羣中的節點。
[getstartedlab] ~ $ docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS n2bsny0r2b8fey6013kwnom3m * ip-172-31-20-217.us-west-1.compute.internal Ready Active Leader
使用 docker service ls
列出服務。
[getstartedlab] ~/sandbox/getstart $ docker service ls ID NAME MODE REPLICAS IMAGE PORTS ioipby1vcxzm getstartedlab_redis replicated 0/1 redis:latest *:6379->6379/tcp u5cxv7ppv5o0 getstartedlab_visualizer replicated 0/1 dockersamples/visualizer:stable *:8080->8080/tcp vy7n2piyqrtr getstartedlab_web replicated 5/5 sam/getstarted:part6 *:80->80/tcp
使用 docker service ps <service>
查看服務的任務。
[getstartedlab] ~/sandbox/getstart $ docker service ps vy7n2piyqrtr ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS qrcd4a9lvjel getstartedlab_web.1 sam/getstarted:part6 ip-172-31-20-217.us-west-1.compute.internal Running Running 20 seconds ago sknya8t4m51u getstartedlab_web.2 sam/getstarted:part6 ip-172-31-20-217.us-west-1.compute.internal Running Running 17 seconds ago ia730lfnrslg getstartedlab_web.3 sam/getstarted:part6 ip-172-31-20-217.us-west-1.compute.internal Running Running 21 seconds ago 1edaa97h9u4k getstartedlab_web.4 sam/getstarted:part6 ip-172-31-20-217.us-west-1.compute.internal Running Running 21 seconds ago uh64ez6ahuew getstartedlab_web.5 sam/getstarted:part6 ip-172-31-20-217.us-west-1.compute.internal Running Running 22 seconds ago
此時,你的應用將做爲swarm部署在雲提供商服務器上,您剛剛運行的 docker
命令就證實了這一點。可是,您仍然須要打開雲服務器上的端口,以便:
若是使用多個節點,則容許 redis
服務和 Web
服務之間的通訊
容許任何輔助節點上的 Web
服務入站流量,以便從 Web 瀏覽器訪問 Hello World 和Visualizer。
容許在運行manager
的服務器上的入站 SSH 流量(這可能已在雲提供商上設置)
如下是您須要爲每一個服務公開的端口:
Service | Type | Protocol | Port |
---|---|---|---|
web | HTTP | TCP | 80 |
visualizer | HTTP | TCP | 8080 |
redis | TCP | TCP | 6379 |
執行此操做的方法因雲提供商而異。
咱們以亞馬遜網絡服務 (AWS) 爲例。
用於保留數據的 redis 服務如何?
要使
redis
服務正常工做,您須要在運行docker stack deploy
以前,將 ssh 到運行manager
的雲服務器中,並在/home/docker/
中建立data/
目錄。另外一個選項是將docker-stack.yml
中的數據路徑更改成manager
服務器上的預先存在的路徑。此示例不包括此步驟,所以在示例輸出中未啓動redis
服務。
從這裏,你能夠作你學到的一切在本教程的前一部分。
經過更改 docker-compose.yml
文件,使用 docker stack deploy
命令動態從新部署應用來擴展應用。
經過編輯代碼更改應用行爲,而後從新生成並推送新鏡像。(爲此,請按照以前爲構建應用和發佈鏡像所執行的相同步驟進行操做)。
您可使用 docker stack rm 拆解stack。例如:
docker stack rm getstartedlab
與在本地 Docker machine VM 上運行swarm的狀況不一樣,不管是否關閉本地主機,您的swarm及其上部署的任何應用都會在雲服務器上繼續運行。
您對整個 Docker 平臺進行了全堆棧,開發到部署的瀏覽。
Docker 平臺的內容遠不止此處介紹的內容,但您對容器、鏡像、服務、swarm、stack、縮放、負載平衡、volume和placement constraints等基礎知識有了很好的瞭解。
想深刻一點嗎?如下是一些建議的資源: