Docker 是一個開源項目,經過把應用程序打包爲可移植的、自給自足的容器(能夠運行在雲端或本地)的方式,實現應用程序的自動化部署。docker
使用 Docker 的時候,須要建立一個應用或服務,而後把它和它的依賴打包到一個容器鏡像中。鏡像是應用或服務,以及它的配置和依賴的靜態表現形式。要運行應用和服務,這個應用的鏡像會被實例化,來建立一個容器,這個容器將會運行在 Docker 宿主機上。Docker公司 維護了一個公用的註冊表叫 Docker Hub,其餘提供商也爲不一樣的鏡像集合提供了各類註冊表。此外,企業能夠在本地建立一個私有的 註冊表,供企業內部的 Docker 鏡像來使用。 數據庫
這裏出現幾個名詞。windows
容器鏡像:一個包含了建立容器所需的全部依賴和信息的「包」。數組
容器:Docker 鏡像的一個實例。安全
註冊表(Registry):爲倉庫提供訪問服務。一個註冊表一般包含來自於多個團隊的倉庫。企業一般會建立私有的 註冊表來存儲和管理他們建立的鏡像。app
Docker Hub:一個公用的 註冊表。tcp
須要注意:Windows 鏡像只能運行在Windows 主機上,Linux 鏡像只能運行在 Linux 主機上。 微服務
2、環境設置測試
對硬件仍是有些要求的。spa
這裏C盤是必須的,另外E盤是我存放eshop源代碼的盤,天然也要共享。
咱們使用DaoCloud來作鏡像加速。官網https://www.daocloud.io
加速地址 http://f1361db2.m.daocloud.io
加到"registry-mirrors"的數組裏,點擊 Apply 。
在本地防火牆中打開端口,以即可以經過STS(安全令牌服務容器,IP:10.0.75.1 )進行身份驗證,該IP爲Docker默認設置。Xamarin app或SPA app等客戶端也須要打開相應的防火牆端口。
您能夠在本地防火牆中手動建立規則,也能夠經過執行解決方案的cli-windows目錄中提供的add-firewall-rules-for-sts-auth-thru-docker.ps1腳原本建立該規則。
您須要經過在防火牆中建立一個IN-BOUND RULE來打開解決方案使用的端口5100到5110,以下面的屏幕截圖所示(對於Windows)。
注意:經過PowerShell腳本設置防火牆規則時可能會由於Windows PowerShell® 默認執行策略未設置而報錯。具體參考:https://go.microsoft.com/fwlink/?LinkID=135170。 能夠經過PowerShell執行"Set-ExecutionPolicy UNRESTRICTED -Scope CurrentUser"命令臨時容許腳本運行,運行完設置防火牆規則腳本後再經過「Set-ExecutionPolicy Undefined -Scope CurrentUser」還原默認設置。 要查看當前執行策略設置可經過命令:「 Get-ExecutionPolicy -List」。
若是隻進行服務端調試,打開「eShopOnContainers-ServicesAndWebApps.sln」解決方案,若是還須要調試移動App,打開「eShopOnContainers.sln」解決方案。
將「docker-compose」設置爲默認啓動項目,按F5或者點運行。
注意:因爲第一次運行Docker需從互聯網下載"SQL for Linux , Redis , ASPNET"等Docker鏡像,視網速可能須要等10分鐘左右。
二、查看已經構建好的鏡像。
注:你可能會看到不少爲 <none>
的鏡像,這些是臨時鏡像,能夠經過命令 docker rmi $(docker images-f"dangling=true"-q)
刪除。
三、測試全部應用程序和微服務
完成容器部署,測試訪問如下服務。
容器正常部署運行後,可經過如下地址訪問任一應用或服務:
MVC網頁: http://localhost:5100
單頁應用網頁: http://localhost:5104 (須要單獨安裝依賴並編譯才能正常運行)
商品目錄微服務: http://localhost:5101 (不須要認證)
訂單微服務: http://localhost:5102 (須要認證)
購物車微服務: http://localhost:5103 (須要認證)
認證微服務: http://localhost:5105
訂單數據庫(SQL Server 鏈接字符串): Server=tcp:localhost,5432;Database=Microsoft.eShopOnContainers.Services.OrderingDb;User Id=sa;Password=Pass@word;
商品目錄數據庫 (SQL Server 鏈接字符串): Server=tcp:localhost,5434;Database=CatalogDB;User Id=sa;Password=Pass@word
認證數據庫 (SQL Server 鏈接字符串): Server=localhost,5433;Database=aspnet-Microsoft.eShopOnContainers;User Id=sa;Password=Pass@word
購物車數據 (Redis): 監聽 localhost:6379