Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
微服務開發及容器化基礎介紹
Search
Brian
September 24, 2020
Programming
0
69
微服務開發及容器化基礎介紹
介紹微服務 (Microservices) 的概念及容器 (Docker) 基礎操作
Brian
September 24, 2020
Tweet
Share
More Decks by Brian
See All by Brian
Introduction of Git
brian90191
0
80
JavaScript 基礎入門
brian90191
0
37
Other Decks in Programming
See All in Programming
『自分のデータだけ見せたい!』を叶える──Laravel × Casbin で複雑権限をスッキリ解きほぐす 25 分
akitotsukahara
2
660
The Niche of CDK Grant オブジェクトって何者?/the-niche-of-cdk-what-isgrant-object
hassaku63
1
610
Modern Angular with Signals and Signal Store:New Rules for Your Architecture @enterJS Advanced Angular Day 2025
manfredsteyer
PRO
0
270
AIともっと楽するE2Eテスト
myohei
8
3k
iOS 26にアップデートすると実機でのHot Reloadができない?
umigishiaoi
0
140
Vibe Codingの幻想を超えて-生成AIを現場で使えるようにするまでの泥臭い話.ai
fumiyakume
9
4.1k
A full stack side project webapp all in Kotlin (KotlinConf 2025)
dankim
0
150
Claude Code派?Gemini CLI派? みんなで比較LT会!_20250716
junholee
1
530
はじめてのWeb API体験 ー 飲食店検索アプリを作ろうー
akinko_0915
0
140
dbt民主化とLLMによる開発ブースト ~ AI Readyな分析サイクルを目指して ~
yoshyum
3
1.1k
チームで開発し事業を加速するための"良い"設計の考え方 @ サポーターズCoLab 2025-07-08
agatan
1
470
Flutterで備える!Accessibility Nutrition Labels完全ガイド
yuukiw00w
0
170
Featured
See All Featured
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
970
Making the Leap to Tech Lead
cromwellryan
134
9.4k
Become a Pro
speakerdeck
PRO
29
5.4k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.6k
For a Future-Friendly Web
brad_frost
179
9.8k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.4k
Building a Modern Day E-commerce SEO Strategy
aleyda
42
7.4k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
BBQ
matthewcrist
89
9.7k
Git: the NoSQL Database
bkeepers
PRO
430
65k
A Tale of Four Properties
chriscoyier
160
23k
Transcript
微服務開發及容器化基礎介紹 Date: 09/24/2020 CSI TECHNOLOGY GROUP | CSI Taipei –
Dept. of Court Product Brian
什麼是微服務 (Microservices) • 微服務既是一種架構,也是編寫軟體的方法。 • 微服務可將應用程式分解成最小型且彼此獨立的元件。有別於 傳統單一的應用程式創建法將所有元件都設置於一處,微服務 是將所有元件分開,再一起運作以完成相同的任務,而其中每 一項元件或流程,都屬於一種微服務。 •
這種軟體開發方法重視細粒化、屬輕量級,並且能在多重應用 程式間共享類似的流程。 2
什麼是容器化技術 (Docker) • 容器技術為應用程式提供標準化的封裝、發行與部署流程,不 但讓應用程式之間可以得到更佳的隔離性,更能讓我們在不受 硬體、主機、作業系統、資料中心等等限制下,彈性的配置我 們的應用程式。 • 這幾年容器技術發展十分迅速,微服務化架構更是大量依賴容 器化基礎建設的幫助下,更容易實現
DevOps 與 CI / CD 等自 動化基礎建設。 3
4
環境準備 - 開啟 Hyper-V & Containers Turn Windows features on
or off → Check Hyper-V and Containers 5
環境準備 – 安裝套件管理工具 安裝 chocolatey 套件管理工具: 1. Install Now →
複製 PowerShell 指令 2. 使用系統管理員身分開啟 PowerShell 並貼上指令執行 6 Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.p s1'))
環境準備 - 安裝 Windows 容器 使用 chocolatey 安裝 Docker Desktop
1. 從 chocolatey 的 packages 中找到 Docker Desktop 套件,複製安 裝指令並貼上 PowerShell 安裝 2. 建議同時安裝: • docker-compose (docker 工具,方便管理多個容器) • Kitematic (可以用視覺化的方式管理 docker) 3. 安裝 docker 並啟動後,查看版本 7 C:\Users\bye>docker version Client: Docker Engine - Community Version: 19.03.12 API version: 1.40 Go version: go1.13.10 Git commit: 48a66213fe Built: Mon Jun 22 15:43:18 2020 OS/Arch: windows/amd64 Experimental: false choco install docker-desktop
容器模式 • Linux Container • Windows Container • 在 Docker
按右鍵就可以看到選單中一項 switch to windows containers 可以針對 Windows / Linux 兩者進行切換動作, 預設是 Linux Containers 8
None
第一次 Docker 就上手 • 下載 Docker Image • 執行一個全新的容器,並且同時執行容器的 cmd
• dir 指令可以看到容器的目錄和自己電腦本機不同,因為這是在容器 的環境裡面,所以容器化的好處就是執行的過程中不會影響到目前正 在使用的主機環境 10 docker pull mcr.microsoft.com/windows/nanoserver:1809 docker run -it mcr.microsoft.com/windows/nanoserver:1809 cmd
容器的應用程式 • 觀念: ▪ 一個容器只能執行一個主要的應用程式,主要應用程式結束後容器就會停止 ▪ 一個容器可以有很多非主要的應用程式,且結束後容器不會停止 • 範例: 執行一個全新的容器,並且同時執行容器的主要應用程式
• 退出 cmd (退出容器的主要應用程式,容器則立刻停止) • 退出 cmd 但不停止容器的方式 – 按下 ctrl + P 然後 ctrl + Q 跳離容器,讓容器繼續在背景執行 • 範例: 執行其他非主要的應用程式,退出後容器不會停止 11 docker run -it mcr.microsoft.com/windows/nanoserver:1809 cmd exit docker exec –it (Container Name/ID) (應用程式名稱) -it 代表直接進入容器的 terminal (終端機)
查看 Docker 狀態 • 查看目前執行中的容器狀態 • 查看曾經執行過的容器狀態 12 docker ps
docker ps -a
常見的 Docker 執行生命週期和管理工具 • Container: 13 • Image: # 啟動容器
docker container run # 列出容器 docker container ls # 停止容器 docker container stop # 重啟容器 docker container start # 進入容器並執行主要的應用程式 docker container attach # 執行/掛載容器的應用程式 docker container exec # 刪除容器 docker container rm # 列出目前的映像檔 docker images # 列出映像檔 (等同 docker images) docker image ls # 檢視映像檔的內容 docker image inspect # 下載映像檔 docker image pull # 上傳映像檔至遠端空間 docker image push # 刪除本地的映像檔 docker image rm # 加上標籤名稱 docker image tag
啟動並執行容器 • docker run -d -p 80:80 REPOSITORYL:TAG -d: detach
模式 (不執行應用程式) -p: port mapping (前面的 port number 代表 local 的 ,後面是容器的) 14
DEMO: 建立 Windows IIS • 使用 microsoft-windows-servercore-iis (執行靜態檔案的 IIS) 1.
Pull Image 2. Run Image 3. 檢查 localhost:8080 看看 IIS 是否成功運行 15 docker pull mcr.microsoft.com/windows/servercore/iis:windowsservercore- ltsc2019 docker run -d -p 8080:80 mcr.microsoft.com/windows/servercore/iis:windowsservercore- ltsc2019
練習執行 IIS 容器並重新建立網頁 16 docker run -d -p 8080:80 mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2019
docker ps docker exec -it (Container Name/ID) cmd cd inetpub cd wwroot del * echo Hello world > index.html exit docker ps docker rm -f (Container Name/ID)
練習執行 ASP.NET 容器 • servercore 是用來執行靜態檔案的 IIS 如果是要用來執行 asp.net 的
IIS 需使用 microsoft-dotnet- framework-aspnet 17 # 下載 image docker pull mcr.microsoft.com/dotnet/framework/aspnet:4.8 # 執行 container docker run -d -p 8080:80 mcr.microsoft.com/dotnet/framework/aspnet:4.8 # 移動到 ASP.NET 專案目錄後,把整個專案本機的目錄和檔案複製進去 docker cp . (Container Name/ID):c:/inetpub/wwwroot/. # 執行 container 的 CMD,再去 wwwroot 就可以發現目錄確實被複製進去 docker exec -it (Container Name/ID) cmd
隔離模式設定 • docker cp 發生錯誤 – Error response from daemon:
filesystem operations against a running Hyper- V container are not supported • 解法: 18
使用 Dockerfile 自建 Docker Image • 在專案根目錄建立 Dockerfile • 建立
Docker Image 19 # 下載 base image From mcr.microsoft.com/dotnet/framework/aspnet:4.8 # 把目前根目錄的檔案複製進 container 的目錄 COPY . C:/Inetpub/wwwroot docker build –f .\Dockerfile –t testapp1:0.1 . • 如果沒有指定 Dockerfile 以外的檔案來建立 image 的話, –f .\Dockerfile 可以省略 • -t 代表貼 tag • 最後的 . 非常重要,代表目前目錄要送進 docker engine 進行建置的動作
執行自建的 Image • 執行建置好的 image 20 docker image ls docker
run –d –p 8080:80 testapp1:0.1
發行 Docker Image 至 Docker Hub • Docker Hub 是官方提供的
Docker Registry,所謂的 Docker Registry 就是一個讓大家可以 pull(下載)或是 push(上傳) image 的地方,把 image 上傳到 Docker Registry 後大家就可 以直接 pull 下來用,不用再根據 Dockerfile 自建出 image • 發行方式: 21 # 登入 Docker Hub docker login # 貼標籤,必須符合 Docker Hub 的命名規則 docker tag testapp1:0.1 userID/testapp1:0.1 # 推到 Docker Hub 上 docker push
其他參考資源 • 全面易懂的 Docker 指令大全 • 《Docker —— 從入門到實踐》正體中文版 •
用30天來介紹和使用 Docker 22
Q & A 23