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
75
微服務開發及容器化基礎介紹
介紹微服務 (Microservices) 的概念及容器 (Docker) 基礎操作
Brian
September 24, 2020
Tweet
Share
More Decks by Brian
See All by Brian
Introduction of Git
brian90191
0
89
JavaScript 基礎入門
brian90191
0
41
Other Decks in Programming
See All in Programming
RAGでハマりがちな"Excelの罠"を、データの構造化で突破する
harumiweb
9
2.8k
AIコードレビューの導入・運用と AI駆動開発における「AI4QA」の取り組みについて
hagevvashi
0
430
AWS Infrastructure as Code の新機能 2025 総まとめ 〜SA 4人による怒涛のデモ祭り〜
konokenj
10
3.3k
What Spring Developers Should Know About Jakarta EE
ivargrimstad
0
200
エンジニアの「手元の自動化」を加速するn8n 2026.02.27
symy2co
0
140
How to stabilize UI tests using XCTest
akkeylab
0
120
Rで始めるML・LLM活用入門
wakamatsu_takumu
0
170
go directiveを最新にしすぎないで欲しい話──あるいは、Go 1.26からgo mod initで作られるgo directiveの値が変わる話 / Go 1.26 リリースパーティ
arthur1
2
540
CSC307 Lecture 13
javiergs
PRO
0
320
社内規程RAGの精度を73.3% → 100%に改善した話
oharu121
13
8k
AI時代のシステム設計:ドメインモデルで変更しやすさを守る設計戦略
masuda220
PRO
5
900
技術検証結果の整理と解析をAIに任せよう!
keisukeikeda
0
120
Featured
See All Featured
Odyssey Design
rkendrick25
PRO
2
540
Building a Modern Day E-commerce SEO Strategy
aleyda
45
8.8k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.7k
GraphQLとの向き合い方2022年版
quramy
50
14k
The Spectacular Lies of Maps
axbom
PRO
1
620
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
150
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
130
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.1k
Fireside Chat
paigeccino
42
3.8k
What's in a price? How to price your products and services
michaelherold
247
13k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
199
73k
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