Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

快速上手 Windows Containers 容器技術 (Docker Taipei)

5,057 views

Published on

本簡報是 Will 保哥 於 2016/11/19 在 Docker Global Mentor Week (Taipei Party) 的演講內容,幫助大家在短時間內快速上手 Windows Containers 容器技術!

活動網址: https://www.meetup.com/Docker-Taipei/events/234985809/

Announcing Docker Global Mentor Week 2016 - Docker Blog
https://blog.docker.com/2016/10/docker-global-mentor-week-2016/

Labs Manual:
https://gist.github.com/doggy8088/6389a0a110486aad409b184ec1331bec

Published in: Technology

快速上手 Windows Containers 容器技術 (Docker Taipei)

  1. 1. 快速上手 Windows Containers 容器技術 適用 Windows Server 2016 Datacenter – with Containers 版本 多奇數位創意有限公司 技術總監 黃保翕 ( Will 保哥 ) 部落格:http://blog.miniasp.com/
  2. 2. Basic Concepts 基本觀念
  3. 3. 3 Docker: Build, Ship, Run • 分散式應用程式的開放平台! • 專為開發人員與系統管理人員而生!( DevOps )
  4. 4. 4 作業系統虛擬化 • Docker 實作輕量級的作業系統虛擬化解決方案!
  5. 5. 5 虛擬機器 與 容器 的比較 參考資料
  6. 6. 6 關於 Windows 容器 • 專為 Windows 平台所開發的 Container 技術 – 多個容器執行個體可以在一部主機上同時執行 – 透過命名空間、資源控制和程序隔離技術來提供容器隔離 • 在容器中執行的程式,在 Host 主機看的見在執行! • 容器執行個體會與 容器主機 共用相同的作業系統核心 • 容器管理方式 – PowerShell Cmdlet – Docker 命令 • 參考文章 – 使用 PowerShell 和 Docker 管理 Windows 容器的比較
  7. 7. 7 關於 Hyper-V 容器 • 為 Windows Container 技術增加容器的隔離性 – 多個容器執行個體可以在一部主機上同時執行 – 透過虛擬機器來提供容器隔離 • 每個容器皆執行於一個名為 vmwp 的 Hyper-V 虛擬機中 • 每個 Hyper-V 容器 與 容器主機 之間提供核心層級隔離 • 啟動方式 docker run -it --isolation=hyperv windowsservercore cmd • 參考文章 – Hyper-V 容器 / docker run reference
  8. 8. 8 使用容器技術的好處 - 開發人員體驗 • 縮短開發人員上手時間 – 快速建立與設定開發/測試環境 – 不同的專案有不同的設定,都可以事先準備好環境 • 提升開發人員工作效率 – 由於容器技術帶來應用程式隔離,無論你用什麼程式語 言、工具、或任何系統參數設定,都不會造成容器之間 互相影響,省去環境衝突帶來的困擾! • 抹除應用程式執行環境的不一致性 – 容器之間的隔離性可以徹底某除任何潛在的環境設定失 誤,並讓應用程式部署更加容易!
  9. 9. 9 使用容器技術的好處 - 軟體部署方面 • 容器技術可以讓你動態改變不同的設定、新增功能、 橫向延展服務,更能迅速的反應需求的變化! • 透過 微服務 (Micro-service) 架構,應用系統中不 同類型的服務都可透過容器技術進行分類與管理, 搭配適合的容器管理工具,就能做到動態資源分配 與分散式軟體部署的目的。
  10. 10. 在 AZURE 建立虛擬機器 Create a Windows Server 2016 VM on Microsoft Azure
  11. 11. 11 在 Azure Portal 建立虛擬機 • https://portal.azure.com/ – 新增資源 / 搜尋關鍵字 • Containers – 選取 Marketplace 項目 • Windows Server 2016 Datacenter – with Containers – 選取部署模型 • 資源管理員 – 建立虛擬機器 • 名 稱:WS2016RTM • 使用者名稱:will • 使用者密碼:Pa$$w0rd1234 (至少12個字元) • 資源群組名:DockerCon1119 • 位 置:東亞
  12. 12. 12 在 Azure Portal 搜尋虛擬機器範本
  13. 13. 13 透過遠端桌面連線(RDP)連接虛擬機器
  14. 14. 容器生命週期 Container Lifecycle
  15. 15. 15 從基礎容器影像建立容器 • 執行以下命令  docker run --name new1 -it microsoft/windowsservercore cmd • 參數說明  run 執行新的容器 (建立容器)  --name new1 指定新建立的容器名稱  -it 進入互動模式 (Interactive)  -i Keep STDIN open even if not attached  -t Allocate a pseudo-TTY  microsoft/windowsservercore 基礎影像名稱  cmd 在容器中執行的命令 • 其他備註 – 執行 exit 可退出容器執行個體且自動停止容器
  16. 16. 16 列出已建立的容器 • 列出正在執行中的容器 – docker ps • 列出所有容器 (包含目前沒有執行的容器) – docker ps -a
  17. 17. 17 管理容器的生命週期 • 列出所有容器 – docker ps -a • 啟動指定容器 (註: new1 為容器名稱 ) – docker start new1 • 在指定容器中執行命令 – docker exec -it new1 cmd • 停止指定容器 – docker stop new1 • 刪除指定容器 – docker rm new1
  18. 18. 列表、啟動、執行、停止、刪除容器
  19. 19. 建立 IIS 容器 Create an IIS Container
  20. 20. 20 直接從 Docker Hub 下載 IIS 容器影像 • https://hub.docker.com/ – 搜尋: iis – 下載: docker pull microsoft/iis
  21. 21. 21 建立 IIS 容器並設定 NAT 埠號對應 • 執行以下命令  docker run --name iis1 -d -p 8088:80 microsoft/iis  docker exec -it iis1 cmd • 參數說明  run 在一個新的容器中執行命令  --name iisbase 指定新建立的容器名稱  -d 進入 detach 模式 (背景執行模式)  -p 8088:80 設定主機埠號 8088 對應到容器的80埠號  microsoft/iis 基礎影像名稱 • 其他備註 – 執行 exit 可退出容器執行個體且自動停止容器
  22. 22. 22 查詢 Container 網路位址 ( IP ) • ipconfig • 用瀏覽器開啟 Container 中的 IIS 站台 http://172.22.36.132/
  23. 23. 23 設定網路安全性群組 (nsg)
  24. 24. 24 設定連入安全性規則
  25. 25. 25 設定連入安全性規則
  26. 26. 26 確認可從外網連入容器站台 • 先取得 Azure VM 的對外公開 IP 地址
  27. 27. 使用 DOCKERFILE 快速建置影像 Using Dockerfile to build container images
  28. 28. 28 建立 Dockerfile 定義檔 • 建立工作區 – C:Build • 建立 Dockerfile 定義檔 – C:BuildDockerfile • 編輯 Dockerfile 定義檔內容 FROM microsoft/iis RUN echo ^<h1^>Hello,^ Container!^</h1^> > c:inetpubwwwrootindex.html
  29. 29. 29 建置容器影像 • 執行以下命令  docker build -t iis c:build • 參數說明  build 建立容器影像  -t iis 指定容器影像的名稱 (t = tag)  c:Build 建置資料夾
  30. 30. 30 其他 Dockerfile 範例 • 建立 C:Build 工作區 • 複製網站檔案到 C:Buildwwwroot 目錄中 • 建立 C:BuildDockerfile 定義檔 – FROM microsoft/iis – ENV Inetpub C:Inetpubwwwroot – WORKDIR ${Inetpub} – ADD wwwroot $Inetpub • 建置容器影像 – docker build -t iis-mvc c:Build • 列出容器影像 – docker images • 建立容器 – docker run -d --name iis2 -p 8088:80 iis-mvc • 停止容器 & 刪除容器 – docker stop iis2 && docker rm iis2 && docker rmi iis-mvc Dockerfile reference
  31. 31. 31 透過 iis 容器影像建立新的容器 • 執行以下命令  docker run --name myiis –d -p 8088:80 iis  docker ps  docker stop myiis  docker rm myiis  docker rmi iis
  32. 32. 學習資源 Learning Resources
  33. 33. 33 常用 docker 命令 • docker ps 列出容器 • docker exec 在容器中執行程式 • docker run 建立容器 • docker commit 從 Container 建立容器影像 • docker build 從 Dockerfile 建立容器影像 • docker rm 刪除容器 • docker images 列出容器影像 • docker rmi 刪除容器影像 • docker save 匯出容器影像成 tar 檔 • docker load 將匯出的容器影像匯入
  34. 34. 34 常用 PowerShell 命令 • Web Server (IIS) Administration Cmdlets – Get-WebSite 列出站台 – New-Website 建立站台 – Start-Website 啟動站台 – Stop-Website 停止站台 • 安裝 Windows 功能角色 – Get-WindowsFeature – Install-WindowsFeature • 其他好用命令 – Expand-Archive – Invoke-WebRequest ( wget )
  35. 35. 35 相關連結 • Windows Containers Documentation (繁體中文版) – Containers Cmdlets – Windows Containers Quick Start - PowerShell – Windows Containers Quick Start – Docker – Application Compatability in Windows Containers • Containers: Docker, Windows and Trends – Container:Docker、Windows 以及趨勢 • MSDN Forums - Windows Containers • What is Docker?
  36. 36. 36 聯絡資訊 • The Will Will Web 記載著 Will 在網路世界的學習心得與技術分享 – http://blog.miniasp.com/ • Will 保哥的技術交流中心 (臉書粉絲專頁) – http://www.facebook.com/will.fans • Will 保哥的噗浪 – http://www.plurk.com/willh/invite • Will 保哥的推特 – https://twitter.com/Will_Huang

×