SlideShare a Scribd company logo
1 of 36
快速上手
Windows Containers
容器技術
適用 Windows Server 2016 Datacenter – with Containers 版本
多奇數位創意有限公司
技術總監 黃保翕 ( Will 保哥 )
部落格:http://blog.miniasp.com/
Basic Concepts
基本觀念
3
Docker: Build, Ship, Run
• 分散式應用程式的開放平台!
• 專為開發人員與系統管理人員而生!( DevOps )
4
作業系統虛擬化
• Docker 實作輕量級的作業系統虛擬化解決方案!
5
虛擬機器 與 容器 的比較
參考資料
6
關於 Windows 容器
• 專為 Windows 平台所開發的 Container 技術
– 多個容器執行個體可以在一部主機上同時執行
– 透過命名空間、資源控制和程序隔離技術來提供容器隔離
• 在容器中執行的程式,在 Host 主機看的見在執行!
• 容器執行個體會與 容器主機 共用相同的作業系統核心
• 容器管理方式
– PowerShell Cmdlet
– Docker 命令
• 參考文章
– 使用 PowerShell 和 Docker 管理 Windows 容器的比較
7
關於 Hyper-V 容器
• 為 Windows Container 技術增加容器的隔離性
– 多個容器執行個體可以在一部主機上同時執行
– 透過虛擬機器來提供容器隔離
• 每個容器皆執行於一個名為 vmwp 的 Hyper-V 虛擬機中
• 每個 Hyper-V 容器 與 容器主機 之間提供核心層級隔離
• 啟動方式
docker run -it --isolation=hyperv windowsservercore cmd
• 參考文章
– Hyper-V 容器 / docker run reference
8
使用容器技術的好處 - 開發人員體驗
• 縮短開發人員上手時間
– 快速建立與設定開發/測試環境
– 不同的專案有不同的設定,都可以事先準備好環境
• 提升開發人員工作效率
– 由於容器技術帶來應用程式隔離,無論你用什麼程式語
言、工具、或任何系統參數設定,都不會造成容器之間
互相影響,省去環境衝突帶來的困擾!
• 抹除應用程式執行環境的不一致性
– 容器之間的隔離性可以徹底某除任何潛在的環境設定失
誤,並讓應用程式部署更加容易!
9
使用容器技術的好處 - 軟體部署方面
• 容器技術可以讓你動態改變不同的設定、新增功能、
橫向延展服務,更能迅速的反應需求的變化!
• 透過 微服務 (Micro-service) 架構,應用系統中不
同類型的服務都可透過容器技術進行分類與管理,
搭配適合的容器管理工具,就能做到動態資源分配
與分散式軟體部署的目的。
在 AZURE 建立虛擬機器
Create a Windows Server 2016 VM on Microsoft Azure
11
在 Azure Portal 建立虛擬機
• https://portal.azure.com/
– 新增資源 / 搜尋關鍵字
• Containers
– 選取 Marketplace 項目
• Windows Server 2016 Datacenter – with Containers
– 選取部署模型
• 資源管理員
– 建立虛擬機器
• 名 稱:WS2016RTM
• 使用者名稱:will
• 使用者密碼:Pa$$w0rd1234 (至少12個字元)
• 資源群組名:DockerCon1119
• 位 置:東亞
12
在 Azure Portal 搜尋虛擬機器範本
13
透過遠端桌面連線(RDP)連接虛擬機器
容器生命週期
Container Lifecycle
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
列出已建立的容器
• 列出正在執行中的容器
– docker ps
• 列出所有容器 (包含目前沒有執行的容器)
– docker ps -a
17
管理容器的生命週期
• 列出所有容器
– docker ps -a
• 啟動指定容器 (註: new1 為容器名稱 )
– docker start new1
• 在指定容器中執行命令
– docker exec -it new1 cmd
• 停止指定容器
– docker stop new1
• 刪除指定容器
– docker rm new1
列表、啟動、執行、停止、刪除容器
建立 IIS 容器
Create an IIS Container
20
直接從 Docker Hub 下載 IIS 容器影像
• https://hub.docker.com/
– 搜尋: iis
– 下載: docker pull microsoft/iis
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
查詢 Container 網路位址 ( IP )
• ipconfig
• 用瀏覽器開啟 Container 中的 IIS 站台
http://172.22.36.132/
23
設定網路安全性群組 (nsg)
24
設定連入安全性規則
25
設定連入安全性規則
26
確認可從外網連入容器站台
• 先取得 Azure VM 的對外公開 IP 地址
使用 DOCKERFILE 快速建置影像
Using Dockerfile to build container images
28
建立 Dockerfile 定義檔
• 建立工作區
– C:Build
• 建立 Dockerfile 定義檔
– C:BuildDockerfile
• 編輯 Dockerfile 定義檔內容
FROM microsoft/iis
RUN echo ^<h1^>Hello,^ Container!^</h1^> >
c:inetpubwwwrootindex.html
29
建置容器影像
• 執行以下命令
 docker build -t iis c:build
• 參數說明
 build 建立容器影像
 -t iis 指定容器影像的名稱 (t = tag)
 c:Build 建置資料夾
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
透過 iis 容器影像建立新的容器
• 執行以下命令
 docker run --name myiis –d -p 8088:80 iis
 docker ps
 docker stop myiis
 docker rm myiis
 docker rmi iis
學習資源
Learning Resources
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
常用 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
相關連結
• 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
聯絡資訊
• 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

More Related Content

What's hot

[OpenStack 하반기 스터디] Docker를 이용한 OpenStack 가상화
[OpenStack 하반기 스터디] Docker를 이용한 OpenStack 가상화[OpenStack 하반기 스터디] Docker를 이용한 OpenStack 가상화
[OpenStack 하반기 스터디] Docker를 이용한 OpenStack 가상화OpenStack Korea Community
 
Docker introduction for the beginners
Docker introduction for the beginnersDocker introduction for the beginners
Docker introduction for the beginnersJuneyoung Oh
 
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3Ji-Woong Choi
 
Docker 사내교육 자료
Docker 사내교육 자료Docker 사내교육 자료
Docker 사내교육 자료Juneyoung Oh
 
DevOps的神鬼奇航
DevOps的神鬼奇航DevOps的神鬼奇航
DevOps的神鬼奇航Edward Kuo
 
Container security
Container securityContainer security
Container securityAnthony Chow
 
Finally, easy integration testing with Testcontainers
Finally, easy integration testing with TestcontainersFinally, easy integration testing with Testcontainers
Finally, easy integration testing with TestcontainersRudy De Busscher
 
使用 Passkeys 打造無密碼驗證服務
使用 Passkeys 打造無密碼驗證服務使用 Passkeys 打造無密碼驗證服務
使用 Passkeys 打造無密碼驗證服務升煌 黃
 
Database in DevOps
Database in DevOpsDatabase in DevOps
Database in DevOpsEdward Kuo
 
What is Docker | Docker Tutorial for Beginners | Docker Container | DevOps To...
What is Docker | Docker Tutorial for Beginners | Docker Container | DevOps To...What is Docker | Docker Tutorial for Beginners | Docker Container | DevOps To...
What is Docker | Docker Tutorial for Beginners | Docker Container | DevOps To...Edureka!
 
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요Jo Hoon
 
Coffee Break NeuVector
Coffee Break NeuVectorCoffee Break NeuVector
Coffee Break NeuVectorSUSE
 
Rootless Containers & Unresolved issues
Rootless Containers & Unresolved issuesRootless Containers & Unresolved issues
Rootless Containers & Unresolved issuesAkihiro Suda
 
Docker 101 - from 0 to Docker in 30 minutes
Docker 101 - from 0 to Docker in 30 minutesDocker 101 - from 0 to Docker in 30 minutes
Docker 101 - from 0 to Docker in 30 minutesLuciano Fiandesio
 

What's hot (20)

[OpenStack 하반기 스터디] Docker를 이용한 OpenStack 가상화
[OpenStack 하반기 스터디] Docker를 이용한 OpenStack 가상화[OpenStack 하반기 스터디] Docker를 이용한 OpenStack 가상화
[OpenStack 하반기 스터디] Docker를 이용한 OpenStack 가상화
 
Docker, LinuX Container
Docker, LinuX ContainerDocker, LinuX Container
Docker, LinuX Container
 
Docker introduction for the beginners
Docker introduction for the beginnersDocker introduction for the beginners
Docker introduction for the beginners
 
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
 
Docker 사내교육 자료
Docker 사내교육 자료Docker 사내교육 자료
Docker 사내교육 자료
 
DevOps的神鬼奇航
DevOps的神鬼奇航DevOps的神鬼奇航
DevOps的神鬼奇航
 
Container security
Container securityContainer security
Container security
 
Introduction to container based virtualization with docker
Introduction to container based virtualization with dockerIntroduction to container based virtualization with docker
Introduction to container based virtualization with docker
 
Finally, easy integration testing with Testcontainers
Finally, easy integration testing with TestcontainersFinally, easy integration testing with Testcontainers
Finally, easy integration testing with Testcontainers
 
使用 Passkeys 打造無密碼驗證服務
使用 Passkeys 打造無密碼驗證服務使用 Passkeys 打造無密碼驗證服務
使用 Passkeys 打造無密碼驗證服務
 
Database in DevOps
Database in DevOpsDatabase in DevOps
Database in DevOps
 
What is Docker | Docker Tutorial for Beginners | Docker Container | DevOps To...
What is Docker | Docker Tutorial for Beginners | Docker Container | DevOps To...What is Docker | Docker Tutorial for Beginners | Docker Container | DevOps To...
What is Docker | Docker Tutorial for Beginners | Docker Container | DevOps To...
 
From Zero to Docker
From Zero to DockerFrom Zero to Docker
From Zero to Docker
 
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
 
Docker
DockerDocker
Docker
 
Coffee Break NeuVector
Coffee Break NeuVectorCoffee Break NeuVector
Coffee Break NeuVector
 
Rootless Containers & Unresolved issues
Rootless Containers & Unresolved issuesRootless Containers & Unresolved issues
Rootless Containers & Unresolved issues
 
Docker Kubernetes Istio
Docker Kubernetes IstioDocker Kubernetes Istio
Docker Kubernetes Istio
 
Docker 101 - from 0 to Docker in 30 minutes
Docker 101 - from 0 to Docker in 30 minutesDocker 101 - from 0 to Docker in 30 minutes
Docker 101 - from 0 to Docker in 30 minutes
 
Maven tutorial
Maven tutorialMaven tutorial
Maven tutorial
 

Viewers also liked

快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)
快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)
快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)Will Huang
 
簡介 GitHub 平台
簡介 GitHub 平台簡介 GitHub 平台
簡介 GitHub 平台Will Huang
 
Azure Web App on Linux @ Global Azure Bootcamp 2017 Taiwan
Azure Web App on Linux @ Global Azure Bootcamp 2017 TaiwanAzure Web App on Linux @ Global Azure Bootcamp 2017 Taiwan
Azure Web App on Linux @ Global Azure Bootcamp 2017 TaiwanWill Huang
 
SQL Server 資料庫版本控管
SQL Server 資料庫版本控管SQL Server 資料庫版本控管
SQL Server 資料庫版本控管Will Huang
 
使用 Angular 2 與 Firebase 實現 Serverless 網站架構 (JSDC.tw 2016)
使用 Angular 2 與 Firebase 實現 Serverless 網站架構 (JSDC.tw 2016)使用 Angular 2 與 Firebase 實現 Serverless 網站架構 (JSDC.tw 2016)
使用 Angular 2 與 Firebase 實現 Serverless 網站架構 (JSDC.tw 2016)Will Huang
 
你所不知道的 Microsoft Azure 雲端資源採購技巧 (2016 Azure 新春特惠方案)
你所不知道的 Microsoft Azure 雲端資源採購技巧 (2016 Azure 新春特惠方案)你所不知道的 Microsoft Azure 雲端資源採購技巧 (2016 Azure 新春特惠方案)
你所不知道的 Microsoft Azure 雲端資源採購技巧 (2016 Azure 新春特惠方案)Will Huang
 
《保哥線上講堂》打造一個具有 Linux 溫度的 Windows 命令提示字元工具
《保哥線上講堂》打造一個具有 Linux 溫度的 Windows 命令提示字元工具《保哥線上講堂》打造一個具有 Linux 溫度的 Windows 命令提示字元工具
《保哥線上講堂》打造一個具有 Linux 溫度的 Windows 命令提示字元工具Will Huang
 
初學者都該了解的 HTTP 通訊協定基礎
初學者都該了解的 HTTP 通訊協定基礎初學者都該了解的 HTTP 通訊協定基礎
初學者都該了解的 HTTP 通訊協定基礎Will Huang
 
中小企業選擇雲端服務的實戰密技
中小企業選擇雲端服務的實戰密技中小企業選擇雲端服務的實戰密技
中小企業選擇雲端服務的實戰密技Will Huang
 
Growth Mindset 經驗分享
Growth Mindset 經驗分享Growth Mindset 經驗分享
Growth Mindset 經驗分享Will Huang
 
Visual Studio 2017 新功能探索 (Study4.TW)
Visual Studio 2017 新功能探索 (Study4.TW)Visual Studio 2017 新功能探索 (Study4.TW)
Visual Studio 2017 新功能探索 (Study4.TW)Will Huang
 
ASP.NET 5 的創新與變革
ASP.NET 5 的創新與變革ASP.NET 5 的創新與變革
ASP.NET 5 的創新與變革Will Huang
 
簡介 Git hub 平台 ( 1.5 hrs )
簡介 Git hub 平台 ( 1.5 hrs )簡介 Git hub 平台 ( 1.5 hrs )
簡介 Git hub 平台 ( 1.5 hrs )Will Huang
 
DEV305 - ASP.NET 5 開發攻略
DEV305 - ASP.NET 5 開發攻略DEV305 - ASP.NET 5 開發攻略
DEV305 - ASP.NET 5 開發攻略Will Huang
 
git merge 與 rebase 的觀念與實務應用
git merge 與 rebase 的觀念與實務應用git merge 與 rebase 的觀念與實務應用
git merge 與 rebase 的觀念與實務應用Will Huang
 
Visual Studio 2015 與 Git 開發實戰
Visual Studio 2015 與 Git 開發實戰Visual Studio 2015 與 Git 開發實戰
Visual Studio 2015 與 Git 開發實戰Will Huang
 
Windows Container 101: dotNET, Container, Kubernetes
Windows Container 101: dotNET, Container, KubernetesWindows Container 101: dotNET, Container, Kubernetes
Windows Container 101: dotNET, Container, KubernetesWill Huang
 
使用 Visual Studio Code 建構 JavaScript 應用程式
使用 Visual Studio Code 建構 JavaScript 應用程式使用 Visual Studio Code 建構 JavaScript 應用程式
使用 Visual Studio Code 建構 JavaScript 應用程式Will Huang
 
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例Will Huang
 
TypeScript 綜合格鬥技
TypeScript 綜合格鬥技TypeScript 綜合格鬥技
TypeScript 綜合格鬥技Will Huang
 

Viewers also liked (20)

快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)
快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)
快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)
 
簡介 GitHub 平台
簡介 GitHub 平台簡介 GitHub 平台
簡介 GitHub 平台
 
Azure Web App on Linux @ Global Azure Bootcamp 2017 Taiwan
Azure Web App on Linux @ Global Azure Bootcamp 2017 TaiwanAzure Web App on Linux @ Global Azure Bootcamp 2017 Taiwan
Azure Web App on Linux @ Global Azure Bootcamp 2017 Taiwan
 
SQL Server 資料庫版本控管
SQL Server 資料庫版本控管SQL Server 資料庫版本控管
SQL Server 資料庫版本控管
 
使用 Angular 2 與 Firebase 實現 Serverless 網站架構 (JSDC.tw 2016)
使用 Angular 2 與 Firebase 實現 Serverless 網站架構 (JSDC.tw 2016)使用 Angular 2 與 Firebase 實現 Serverless 網站架構 (JSDC.tw 2016)
使用 Angular 2 與 Firebase 實現 Serverless 網站架構 (JSDC.tw 2016)
 
你所不知道的 Microsoft Azure 雲端資源採購技巧 (2016 Azure 新春特惠方案)
你所不知道的 Microsoft Azure 雲端資源採購技巧 (2016 Azure 新春特惠方案)你所不知道的 Microsoft Azure 雲端資源採購技巧 (2016 Azure 新春特惠方案)
你所不知道的 Microsoft Azure 雲端資源採購技巧 (2016 Azure 新春特惠方案)
 
《保哥線上講堂》打造一個具有 Linux 溫度的 Windows 命令提示字元工具
《保哥線上講堂》打造一個具有 Linux 溫度的 Windows 命令提示字元工具《保哥線上講堂》打造一個具有 Linux 溫度的 Windows 命令提示字元工具
《保哥線上講堂》打造一個具有 Linux 溫度的 Windows 命令提示字元工具
 
初學者都該了解的 HTTP 通訊協定基礎
初學者都該了解的 HTTP 通訊協定基礎初學者都該了解的 HTTP 通訊協定基礎
初學者都該了解的 HTTP 通訊協定基礎
 
中小企業選擇雲端服務的實戰密技
中小企業選擇雲端服務的實戰密技中小企業選擇雲端服務的實戰密技
中小企業選擇雲端服務的實戰密技
 
Growth Mindset 經驗分享
Growth Mindset 經驗分享Growth Mindset 經驗分享
Growth Mindset 經驗分享
 
Visual Studio 2017 新功能探索 (Study4.TW)
Visual Studio 2017 新功能探索 (Study4.TW)Visual Studio 2017 新功能探索 (Study4.TW)
Visual Studio 2017 新功能探索 (Study4.TW)
 
ASP.NET 5 的創新與變革
ASP.NET 5 的創新與變革ASP.NET 5 的創新與變革
ASP.NET 5 的創新與變革
 
簡介 Git hub 平台 ( 1.5 hrs )
簡介 Git hub 平台 ( 1.5 hrs )簡介 Git hub 平台 ( 1.5 hrs )
簡介 Git hub 平台 ( 1.5 hrs )
 
DEV305 - ASP.NET 5 開發攻略
DEV305 - ASP.NET 5 開發攻略DEV305 - ASP.NET 5 開發攻略
DEV305 - ASP.NET 5 開發攻略
 
git merge 與 rebase 的觀念與實務應用
git merge 與 rebase 的觀念與實務應用git merge 與 rebase 的觀念與實務應用
git merge 與 rebase 的觀念與實務應用
 
Visual Studio 2015 與 Git 開發實戰
Visual Studio 2015 與 Git 開發實戰Visual Studio 2015 與 Git 開發實戰
Visual Studio 2015 與 Git 開發實戰
 
Windows Container 101: dotNET, Container, Kubernetes
Windows Container 101: dotNET, Container, KubernetesWindows Container 101: dotNET, Container, Kubernetes
Windows Container 101: dotNET, Container, Kubernetes
 
使用 Visual Studio Code 建構 JavaScript 應用程式
使用 Visual Studio Code 建構 JavaScript 應用程式使用 Visual Studio Code 建構 JavaScript 應用程式
使用 Visual Studio Code 建構 JavaScript 應用程式
 
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例
 
TypeScript 綜合格鬥技
TypeScript 綜合格鬥技TypeScript 綜合格鬥技
TypeScript 綜合格鬥技
 

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

Docker一期培训
Docker一期培训Docker一期培训
Docker一期培训青帅 常
 
Azure Container Service 使用 DC / OS 管理 docker 容器
Azure Container Service 使用 DC / OS 管理 docker 容器Azure Container Service 使用 DC / OS 管理 docker 容器
Azure Container Service 使用 DC / OS 管理 docker 容器Ch Rick
 
docker intro
docker introdocker intro
docker introkoji lin
 
Docker容器微服務 x WorkShop
Docker容器微服務 x WorkShopDocker容器微服務 x WorkShop
Docker容器微服務 x WorkShopPhilip Zheng
 
Docker open stack
Docker open stackDocker open stack
Docker open stackGuangya Liu
 
Docker tutorial
Docker tutorialDocker tutorial
Docker tutorialazole Lai
 
Docker 最佳实践
Docker 最佳实践Docker 最佳实践
Docker 最佳实践YuLing Liu
 
Docker Compose
Docker ComposeDocker Compose
Docker ComposeMiles Chou
 
企業導入容器經驗分享與開源技能培養
企業導入容器經驗分享與開源技能培養企業導入容器經驗分享與開源技能培養
企業導入容器經驗分享與開源技能培養Philip Zheng
 
Windows 與 Azure 的容器旅程 @ Ignite Mini 2016
Windows 與 Azure 的容器旅程 @ Ignite Mini 2016Windows 與 Azure 的容器旅程 @ Ignite Mini 2016
Windows 與 Azure 的容器旅程 @ Ignite Mini 2016Jeff Chu
 
Docker 基礎介紹與實戰
Docker 基礎介紹與實戰Docker 基礎介紹與實戰
Docker 基礎介紹與實戰Bo-Yi Wu
 
20150604 docker 新手入門
20150604 docker 新手入門20150604 docker 新手入門
20150604 docker 新手入門azole Lai
 
Docker初识
Docker初识Docker初识
Docker初识hubugui
 

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

Docker基礎
Docker基礎Docker基礎
Docker基礎
 
Docker一期培训
Docker一期培训Docker一期培训
Docker一期培训
 
Docker 101
Docker 101Docker 101
Docker 101
 
Azure Container Service 使用 DC / OS 管理 docker 容器
Azure Container Service 使用 DC / OS 管理 docker 容器Azure Container Service 使用 DC / OS 管理 docker 容器
Azure Container Service 使用 DC / OS 管理 docker 容器
 
Docker實務
Docker實務Docker實務
Docker實務
 
docker intro
docker introdocker intro
docker intro
 
Docker容器微服務 x WorkShop
Docker容器微服務 x WorkShopDocker容器微服務 x WorkShop
Docker容器微服務 x WorkShop
 
Docker Build
Docker BuildDocker Build
Docker Build
 
Docker open stack
Docker open stackDocker open stack
Docker open stack
 
Docker tutorial
Docker tutorialDocker tutorial
Docker tutorial
 
Docker 最佳实践
Docker 最佳实践Docker 最佳实践
Docker 最佳实践
 
Docker Compose
Docker ComposeDocker Compose
Docker Compose
 
企業導入容器經驗分享與開源技能培養
企業導入容器經驗分享與開源技能培養企業導入容器經驗分享與開源技能培養
企業導入容器經驗分享與開源技能培養
 
Windows 與 Azure 的容器旅程 @ Ignite Mini 2016
Windows 與 Azure 的容器旅程 @ Ignite Mini 2016Windows 與 Azure 的容器旅程 @ Ignite Mini 2016
Windows 與 Azure 的容器旅程 @ Ignite Mini 2016
 
Docker 基礎介紹與實戰
Docker 基礎介紹與實戰Docker 基礎介紹與實戰
Docker 基礎介紹與實戰
 
Docker應用
Docker應用Docker應用
Docker應用
 
Docker基礎
Docker基礎Docker基礎
Docker基礎
 
20150604 docker 新手入門
20150604 docker 新手入門20150604 docker 新手入門
20150604 docker 新手入門
 
Docker
DockerDocker
Docker
 
Docker初识
Docker初识Docker初识
Docker初识
 

More from Will Huang

深入理解 CVE-2022-24765 漏洞的攻擊與防護策略 (Git v2.35.2)
深入理解 CVE-2022-24765 漏洞的攻擊與防護策略 (Git v2.35.2)深入理解 CVE-2022-24765 漏洞的攻擊與防護策略 (Git v2.35.2)
深入理解 CVE-2022-24765 漏洞的攻擊與防護策略 (Git v2.35.2)Will Huang
 
從頭打造 C#、.NET 與 ASP.NET Core 開發環境
從頭打造 C#、.NET 與 ASP.NET Core 開發環境從頭打造 C#、.NET 與 ASP.NET Core 開發環境
從頭打造 C#、.NET 與 ASP.NET Core 開發環境Will Huang
 
ASP.NET Core 6.0 全新功能探索
ASP.NET Core 6.0 全新功能探索ASP.NET Core 6.0 全新功能探索
ASP.NET Core 6.0 全新功能探索Will Huang
 
進擊的前端工程師:今天就用 JSON Server 自己打造 API 吧!
進擊的前端工程師:今天就用 JSON Server 自己打造 API 吧!進擊的前端工程師:今天就用 JSON Server 自己打造 API 吧!
進擊的前端工程師:今天就用 JSON Server 自己打造 API 吧!Will Huang
 
你一定不能不知道的 Markdown 寫作技巧
你一定不能不知道的 Markdown 寫作技巧你一定不能不知道的 Markdown 寫作技巧
你一定不能不知道的 Markdown 寫作技巧Will Huang
 
使用 .NET 5 實現美股期貨的量化交易策略 (.NET Conf 2020)
使用 .NET 5 實現美股期貨的量化交易策略 (.NET Conf 2020)使用 .NET 5 實現美股期貨的量化交易策略 (.NET Conf 2020)
使用 .NET 5 實現美股期貨的量化交易策略 (.NET Conf 2020)Will Huang
 
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)Will Huang
 
Micro-frontends with Angular 10 (Modern Web 2020)
Micro-frontends with Angular 10 (Modern Web 2020)Micro-frontends with Angular 10 (Modern Web 2020)
Micro-frontends with Angular 10 (Modern Web 2020)Will Huang
 
從實戰經驗看到的 K8S 導入痛點
從實戰經驗看到的 K8S 導入痛點從實戰經驗看到的 K8S 導入痛點
從實戰經驗看到的 K8S 導入痛點Will Huang
 
RxJS 6 新手入門
RxJS 6 新手入門RxJS 6 新手入門
RxJS 6 新手入門Will Huang
 
极速 Angular 开发:效能调校技巧 (ngChina 2019)
极速 Angular 开发:效能调校技巧 (ngChina 2019)极速 Angular 开发:效能调校技巧 (ngChina 2019)
极速 Angular 开发:效能调校技巧 (ngChina 2019)Will Huang
 
你不可不知的 ASP.NET Core 3 全新功能探索 (.NET Conf 2019)
你不可不知的 ASP.NET Core 3 全新功能探索 (.NET Conf 2019)你不可不知的 ASP.NET Core 3 全新功能探索 (.NET Conf 2019)
你不可不知的 ASP.NET Core 3 全新功能探索 (.NET Conf 2019)Will Huang
 
Protractor: The Hacker way (NG-MY 2019)
Protractor: The Hacker way (NG-MY 2019)Protractor: The Hacker way (NG-MY 2019)
Protractor: The Hacker way (NG-MY 2019)Will Huang
 
邁向 Windows Server 應用程式現代化 (Windows Server Application Modernization)
邁向 Windows Server 應用程式現代化 (Windows Server Application Modernization)邁向 Windows Server 應用程式現代化 (Windows Server Application Modernization)
邁向 Windows Server 應用程式現代化 (Windows Server Application Modernization)Will Huang
 
Angular 开发技巧 (2018 ngChina 开发者大会)
Angular 开发技巧 (2018 ngChina 开发者大会)Angular 开发技巧 (2018 ngChina 开发者大会)
Angular 开发技巧 (2018 ngChina 开发者大会)Will Huang
 
Angular 7 全新功能探索 (Angular Taiwan 2018)
Angular 7 全新功能探索 (Angular Taiwan 2018)Angular 7 全新功能探索 (Angular Taiwan 2018)
Angular 7 全新功能探索 (Angular Taiwan 2018)Will Huang
 
利用.NET Core 與 Azure Kubernetes Service (AKS) 建立高彈性 Microservices (Azure TechDay)
利用.NET Core 與 Azure Kubernetes Service (AKS) 建立高彈性 Microservices (Azure TechDay)利用.NET Core 與 Azure Kubernetes Service (AKS) 建立高彈性 Microservices (Azure TechDay)
利用.NET Core 與 Azure Kubernetes Service (AKS) 建立高彈性 Microservices (Azure TechDay)Will Huang
 
AKS 與開發人員體驗 (Kubernetes 大講堂)
AKS 與開發人員體驗 (Kubernetes 大講堂)AKS 與開發人員體驗 (Kubernetes 大講堂)
AKS 與開發人員體驗 (Kubernetes 大講堂)Will Huang
 
使用 ASP.NET Blazor 開發 SPA 網頁應用程式 (.NET Conf 2018)
使用 ASP.NET Blazor 開發 SPA 網頁應用程式 (.NET Conf 2018)使用 ASP.NET Blazor 開發 SPA 網頁應用程式 (.NET Conf 2018)
使用 ASP.NET Blazor 開發 SPA 網頁應用程式 (.NET Conf 2018)Will Huang
 
全新 Windows Server 2019 容器技術 及邁向與 Kubernetes 整合之路 (Windows Server 高峰會)
全新 Windows Server 2019 容器技術及邁向與 Kubernetes 整合之路 (Windows Server 高峰會)全新 Windows Server 2019 容器技術及邁向與 Kubernetes 整合之路 (Windows Server 高峰會)
全新 Windows Server 2019 容器技術 及邁向與 Kubernetes 整合之路 (Windows Server 高峰會)Will Huang
 

More from Will Huang (20)

深入理解 CVE-2022-24765 漏洞的攻擊與防護策略 (Git v2.35.2)
深入理解 CVE-2022-24765 漏洞的攻擊與防護策略 (Git v2.35.2)深入理解 CVE-2022-24765 漏洞的攻擊與防護策略 (Git v2.35.2)
深入理解 CVE-2022-24765 漏洞的攻擊與防護策略 (Git v2.35.2)
 
從頭打造 C#、.NET 與 ASP.NET Core 開發環境
從頭打造 C#、.NET 與 ASP.NET Core 開發環境從頭打造 C#、.NET 與 ASP.NET Core 開發環境
從頭打造 C#、.NET 與 ASP.NET Core 開發環境
 
ASP.NET Core 6.0 全新功能探索
ASP.NET Core 6.0 全新功能探索ASP.NET Core 6.0 全新功能探索
ASP.NET Core 6.0 全新功能探索
 
進擊的前端工程師:今天就用 JSON Server 自己打造 API 吧!
進擊的前端工程師:今天就用 JSON Server 自己打造 API 吧!進擊的前端工程師:今天就用 JSON Server 自己打造 API 吧!
進擊的前端工程師:今天就用 JSON Server 自己打造 API 吧!
 
你一定不能不知道的 Markdown 寫作技巧
你一定不能不知道的 Markdown 寫作技巧你一定不能不知道的 Markdown 寫作技巧
你一定不能不知道的 Markdown 寫作技巧
 
使用 .NET 5 實現美股期貨的量化交易策略 (.NET Conf 2020)
使用 .NET 5 實現美股期貨的量化交易策略 (.NET Conf 2020)使用 .NET 5 實現美股期貨的量化交易策略 (.NET Conf 2020)
使用 .NET 5 實現美股期貨的量化交易策略 (.NET Conf 2020)
 
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)
 
Micro-frontends with Angular 10 (Modern Web 2020)
Micro-frontends with Angular 10 (Modern Web 2020)Micro-frontends with Angular 10 (Modern Web 2020)
Micro-frontends with Angular 10 (Modern Web 2020)
 
從實戰經驗看到的 K8S 導入痛點
從實戰經驗看到的 K8S 導入痛點從實戰經驗看到的 K8S 導入痛點
從實戰經驗看到的 K8S 導入痛點
 
RxJS 6 新手入門
RxJS 6 新手入門RxJS 6 新手入門
RxJS 6 新手入門
 
极速 Angular 开发:效能调校技巧 (ngChina 2019)
极速 Angular 开发:效能调校技巧 (ngChina 2019)极速 Angular 开发:效能调校技巧 (ngChina 2019)
极速 Angular 开发:效能调校技巧 (ngChina 2019)
 
你不可不知的 ASP.NET Core 3 全新功能探索 (.NET Conf 2019)
你不可不知的 ASP.NET Core 3 全新功能探索 (.NET Conf 2019)你不可不知的 ASP.NET Core 3 全新功能探索 (.NET Conf 2019)
你不可不知的 ASP.NET Core 3 全新功能探索 (.NET Conf 2019)
 
Protractor: The Hacker way (NG-MY 2019)
Protractor: The Hacker way (NG-MY 2019)Protractor: The Hacker way (NG-MY 2019)
Protractor: The Hacker way (NG-MY 2019)
 
邁向 Windows Server 應用程式現代化 (Windows Server Application Modernization)
邁向 Windows Server 應用程式現代化 (Windows Server Application Modernization)邁向 Windows Server 應用程式現代化 (Windows Server Application Modernization)
邁向 Windows Server 應用程式現代化 (Windows Server Application Modernization)
 
Angular 开发技巧 (2018 ngChina 开发者大会)
Angular 开发技巧 (2018 ngChina 开发者大会)Angular 开发技巧 (2018 ngChina 开发者大会)
Angular 开发技巧 (2018 ngChina 开发者大会)
 
Angular 7 全新功能探索 (Angular Taiwan 2018)
Angular 7 全新功能探索 (Angular Taiwan 2018)Angular 7 全新功能探索 (Angular Taiwan 2018)
Angular 7 全新功能探索 (Angular Taiwan 2018)
 
利用.NET Core 與 Azure Kubernetes Service (AKS) 建立高彈性 Microservices (Azure TechDay)
利用.NET Core 與 Azure Kubernetes Service (AKS) 建立高彈性 Microservices (Azure TechDay)利用.NET Core 與 Azure Kubernetes Service (AKS) 建立高彈性 Microservices (Azure TechDay)
利用.NET Core 與 Azure Kubernetes Service (AKS) 建立高彈性 Microservices (Azure TechDay)
 
AKS 與開發人員體驗 (Kubernetes 大講堂)
AKS 與開發人員體驗 (Kubernetes 大講堂)AKS 與開發人員體驗 (Kubernetes 大講堂)
AKS 與開發人員體驗 (Kubernetes 大講堂)
 
使用 ASP.NET Blazor 開發 SPA 網頁應用程式 (.NET Conf 2018)
使用 ASP.NET Blazor 開發 SPA 網頁應用程式 (.NET Conf 2018)使用 ASP.NET Blazor 開發 SPA 網頁應用程式 (.NET Conf 2018)
使用 ASP.NET Blazor 開發 SPA 網頁應用程式 (.NET Conf 2018)
 
全新 Windows Server 2019 容器技術 及邁向與 Kubernetes 整合之路 (Windows Server 高峰會)
全新 Windows Server 2019 容器技術及邁向與 Kubernetes 整合之路 (Windows Server 高峰會)全新 Windows Server 2019 容器技術及邁向與 Kubernetes 整合之路 (Windows Server 高峰會)
全新 Windows Server 2019 容器技術 及邁向與 Kubernetes 整合之路 (Windows Server 高峰會)
 

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

  • 1. 快速上手 Windows Containers 容器技術 適用 Windows Server 2016 Datacenter – with Containers 版本 多奇數位創意有限公司 技術總監 黃保翕 ( Will 保哥 ) 部落格:http://blog.miniasp.com/
  • 3. 3 Docker: Build, Ship, Run • 分散式應用程式的開放平台! • 專為開發人員與系統管理人員而生!( DevOps )
  • 5. 5 虛擬機器 與 容器 的比較 參考資料
  • 6. 6 關於 Windows 容器 • 專為 Windows 平台所開發的 Container 技術 – 多個容器執行個體可以在一部主機上同時執行 – 透過命名空間、資源控制和程序隔離技術來提供容器隔離 • 在容器中執行的程式,在 Host 主機看的見在執行! • 容器執行個體會與 容器主機 共用相同的作業系統核心 • 容器管理方式 – PowerShell Cmdlet – Docker 命令 • 參考文章 – 使用 PowerShell 和 Docker 管理 Windows 容器的比較
  • 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 使用容器技術的好處 - 開發人員體驗 • 縮短開發人員上手時間 – 快速建立與設定開發/測試環境 – 不同的專案有不同的設定,都可以事先準備好環境 • 提升開發人員工作效率 – 由於容器技術帶來應用程式隔離,無論你用什麼程式語 言、工具、或任何系統參數設定,都不會造成容器之間 互相影響,省去環境衝突帶來的困擾! • 抹除應用程式執行環境的不一致性 – 容器之間的隔離性可以徹底某除任何潛在的環境設定失 誤,並讓應用程式部署更加容易!
  • 9. 9 使用容器技術的好處 - 軟體部署方面 • 容器技術可以讓你動態改變不同的設定、新增功能、 橫向延展服務,更能迅速的反應需求的變化! • 透過 微服務 (Micro-service) 架構,應用系統中不 同類型的服務都可透過容器技術進行分類與管理, 搭配適合的容器管理工具,就能做到動態資源分配 與分散式軟體部署的目的。
  • 10. 在 AZURE 建立虛擬機器 Create a Windows Server 2016 VM on Microsoft Azure
  • 11. 11 在 Azure Portal 建立虛擬機 • https://portal.azure.com/ – 新增資源 / 搜尋關鍵字 • Containers – 選取 Marketplace 項目 • Windows Server 2016 Datacenter – with Containers – 選取部署模型 • 資源管理員 – 建立虛擬機器 • 名 稱:WS2016RTM • 使用者名稱:will • 使用者密碼:Pa$$w0rd1234 (至少12個字元) • 資源群組名:DockerCon1119 • 位 置:東亞
  • 12. 12 在 Azure Portal 搜尋虛擬機器範本
  • 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 列出已建立的容器 • 列出正在執行中的容器 – docker ps • 列出所有容器 (包含目前沒有執行的容器) – docker ps -a
  • 17. 17 管理容器的生命週期 • 列出所有容器 – docker ps -a • 啟動指定容器 (註: new1 為容器名稱 ) – docker start new1 • 在指定容器中執行命令 – docker exec -it new1 cmd • 停止指定容器 – docker stop new1 • 刪除指定容器 – docker rm new1
  • 19. 建立 IIS 容器 Create an IIS Container
  • 20. 20 直接從 Docker Hub 下載 IIS 容器影像 • https://hub.docker.com/ – 搜尋: iis – 下載: docker pull microsoft/iis
  • 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 查詢 Container 網路位址 ( IP ) • ipconfig • 用瀏覽器開啟 Container 中的 IIS 站台 http://172.22.36.132/
  • 27. 使用 DOCKERFILE 快速建置影像 Using Dockerfile to build container images
  • 28. 28 建立 Dockerfile 定義檔 • 建立工作區 – C:Build • 建立 Dockerfile 定義檔 – C:BuildDockerfile • 編輯 Dockerfile 定義檔內容 FROM microsoft/iis RUN echo ^<h1^>Hello,^ Container!^</h1^> > c:inetpubwwwrootindex.html
  • 29. 29 建置容器影像 • 執行以下命令  docker build -t iis c:build • 參數說明  build 建立容器影像  -t iis 指定容器影像的名稱 (t = tag)  c:Build 建置資料夾
  • 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 透過 iis 容器影像建立新的容器 • 執行以下命令  docker run --name myiis –d -p 8088:80 iis  docker ps  docker stop myiis  docker rm myiis  docker rmi iis
  • 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 常用 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 相關連結 • 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 聯絡資訊 • 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