SlideShare uma empresa Scribd logo
1 de 76
Baixar para ler offline
容器微服務實作
Philipz (鄭淳尹)
3/21 Open Ecosystem Workshop
https://goo.gl/q4RF8p
Docker 相關經歷
Docker.Taipei 共同發起人
2014 COSCUP/iThome Summit 講者
2015 Microsoft Azure 開發者大會 講者
2016 COSCUP Docker 進階工作坊
2016 元智大學資工系 Docker 專題演講
2016 義守大學資工系 Docker 研習營
2017 逢甲大學資工系 Docker 研習班
課程大綱
1. Docker 簡介及生態系工具
2. Docker 基本操作
3. Docker Network 與微服務實作
4. Docker Compose 快速部署微服務
5. Compose 部署到 Kubernetes
6. 結語
1. Docker 簡介
虛擬化技術的歷史
● IBM zOS
● 虛擬化軟體 - VMware, KVM, Xen, VirtualBox
● Hardware-assisted virtualization 硬體加速
● Paravirtualization 半虛擬化
● 作業系統層虛擬化
a. OpenVZ
b. LXC
c. Docker
● IaaS, PaaS, SaaS - Snapshot, Migration
容器與虛擬化架構差異
Instance實例
容器與虛擬機技術特性比較
特性 容器 虛擬機
啟動速度 秒級 分鐘級
性能 接近原生 較差
記憶體使用 很少 較多
硬碟使用 一般為MB 一般為GB
運行數量 單機支援上千個容
器
通常為幾十個VMs
隔離性 安全隔離 完全隔離
遷移性 優異 一般
勝
勝
勝
勝
勝
勝
勝
Containers vs. VMs
虛擬化架構
容器化架構
容器+虛擬化架構
The Matrix of Hell
1.1 Docker 生態系相關工具
Docker是什麼?
作業系統層虛擬化
(Operating system–level virtualization)
v0.9 Libcontainer → runC
Windows Container
Docker Engine
Docker Host
靜態到執行時期
Docker Tools
Docker Compose
● 一鍵完成多個容器
● docker-compose.yml
● 支援 Docker Network
● 支援 Docker Volume
● 建構完整軟體服務
○ 如:3-tier
● 快速建置測試模擬環境
Docker Machine
● 在多種平台上建立 VM
● 一套工具適用所有雲端平台
、虛擬化平台
● 內建 Docker Engine
● 具備 SSH 功能
● 輕易切換多個平台
○ Docker API
● 只支援 Linux-based VM
Docker Swarm
● Docker Engine 內建功能
● 容器叢集系統
○ K8S、Mesos
● 大型容器運算平台
● 內建分散式鍵值儲存功能
● Manager-Node架構
○ Overlay、Compose YML
● DNS-based 服務發現機制
Docker Registry
● Docker 映像檔儲存服務
● 私有 Docker Hub
● 雲端平台提供代管服務
○ Azure、AWS、GCP
● Tag 版本控管
● 需第三方 OAuth 認證,Harbor
● 建議直接使用雲端代管服務
Docker EE & UCP
Docker 容器架構
容器使用方式
Commit
Push
Pull
Deploy
2. Docker基本操作
https://labs.play-with-docker.com/
Install Docker
Install Docker on Ubuntu
or
curl -sSL https://get.docker.com/ | sh
and
docker run hello-world
sudo usermod -aG docker $USER
Docker Desktop for Windows
● Windows 10 Professional or Enterprise only
● WSL(Windows Subsystem for Linux)
Docker Desktop for Windows
● Windows 10 Professional or Enterprise only
● WSL(Windows Subsystem for Linux)
Docker 管理用指令
Docker 映像檔指令 - docker image
Ctrl-p Ctrl-q
Docker容器指令(1) - docker container
Docker容器指令(2) - docker container
3. Docker Network 指令
TCP/IP Foundation
www.google.com, www 是 hostname, google.com 是
domain name.
Localhost: 127.0.0.1
TCP/UDP Port: 0-65535 = 2^16,
but 0 是保留不可使用的連接埠
Private IP:
10.0.0.0/8
172.16.0.0/12 ~ 172.31.0.0/12
192.168.0.0/16
Network 相關指令
https://docs.docker.com/engine/userguide/networking/
Docker 內建 Network Drivers
● Bridge
● Overlay
● MACVLAN
● Host
● None
不要再使用 “link”, 改用 network.
Docker Reference Architecture: Designing
Scalable, Portable Docker Container Networks
Docker Plug-In Network Drivers
● weave
● calico
Docker Plug-In IPAM Drivers
● infoblox
3. Docker Network
微服務實作
練習一
$ docker network ls
$ ifconfig
$ docker run -ti --rm busybox sh
cat /etc/hosts, ifconfig
$ docker network inspect bridge
$ docker run -itd --name=container1 busybox
$ docker run -itd --name=container2 busybox
$ docker exec -ti container2 sh
ping -w3 172.17.0.2, ping container1
練習二
$ docker network create vlan_1
$ docker network inspect vlan_1
$ ifconfig | more
$ docker run --network=vlan_1 -itd --name=container3 busybox
$ docker network inspect vlan_1
$ docker run --network=vlan_1 -itd --name=container4 busybox
$ docker exec -ti container4 sh
ping -w3 172.17.0.2, ping container1, ping container3
練習三
$ docker network create wp_db
$ docker pull mysql:5.7
$ docker pull wordpress
$ docker run -d --name db --network=wp_db
-e MYSQL_ROOT_PASSWORD=wordpress
-e MYSQL_DATABASE=wordpress
-e MYSQL_USER=wordpress
-e MYSQL_PASSWORD=wordpress
mysql:5.7
$ docker run -d --name wp -p 80:80 --network=wp_db
-e WORDPRESS_DB_HOST=db:3306
-e WORDPRESS_DB_PASSWORD=wordpress
wordpress
4.1 Docker Compose
基本指令
安裝 Docker Compose
sudo curl -L
"https://github.com/docker/compose/releases/download/1.1
4.0/docker-compose-$(uname -s)-$(uname -m)" -o 
/usr/local/bin/docker-compose
然後
sudo chmod +x /usr/local/bin/docker-compose
docker-compose -v
Docker Compose 指令 (1/2)
Commands:
build Build or rebuild services
bundle Generate a Docker bundle from the Compose file
config Validate and view the compose file
create Create services
down Stop and remove containers, networks, images, and volumes
events Receive real time events from containers
exec Execute a command in a running container
help Get help on a command
kill Kill containers
logs View output from containers
pause Pause services
port Print the public port for a port binding
Docker Compose 指令 (2/2)
Commands:
ps List containers
pull Pull service images
push Push service images
restart Restart services
rm Remove stopped containers
run Run a one-off command
scale Set number of containers for a service
start Start services
stop Stop services
unpause Unpause services
up Create and start containers
version Show the Docker-Compose version information
Compose 檔案說明
一次執行多個容器,建構完整服務
必須是 docker-compose.yml
相同目錄:docker-compose up -d
Docker 會自動建置包含 Dockerfile 的子目錄
支援 Docker Network, Volume
1.13 版本支援 Swarm mode.
Quickstart: Compose and WordPress
4.2 Docker Compose
快速部署微服務
Compose File Sample (1/2)
version: '2'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: wordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
Compose File Sample (1/2)
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "80:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_PASSWORD: wordpress
volumes:
db_data:
Compose & Wordpress
● 水平擴展 wordpress:scale nslookup wordpress
docker-compose restart webproxy
Microservices Java Worker
Docker Birthday #3 training
Microservices .NET Worker
Docker Birthday #3 training
5. Compose 部署到
Kubernetes
Compose on Kubernetes
● Offical solution, 2018-12-04, dockerconf 2018
Play with Kubernetes
https://labs.play-with-k8s.com/
Steps of Deploy to K8S
1. git clone
2. Setup up Kubernetes Cluster
a. Run bootstrap-pwk.sh
b. kubeadm join
c. kubectl get nodes
3. Run prepare-pwk.sh
4. kubectl get stack
5. kubectl get svc
Compose to Azure AKS
6. 結語
Open SourceOpen HardwareOpen Architecture
Container Principle
貨櫃交付原則
● One Container
● One Customer
● One Commodity
軟體貨櫃
● One Container
● One Process
我是航運大王麥
克連,不是終極
警探的麥克連!
Microservices(微服務)
作業系統容器 vs. 應用程式容器
容器式系統架構
Cloud Native Architecture
http://www.infoq.com/cn/articles/microservices-post-kubernetes
6.1 相關線上學習資源
Docker 線上自學網站
Docker 從入門到實踐
https://yeasy.gitbooks.io/docker_practic
e/content/
https://www.katacoda.com/
https://training.play-with-docker.com/
Docker 線上自學網站
Docker 從入門到實踐
gitbook.com/book/philipzheng/docker_p
ractice/
Docker 線上自學網站
Docker 從入門到實踐
gitbook.com/book/philipzheng/docker_p
ractice/
延伸閱讀
Thank you
Docker可省下比金錢更寶貴的時間!

Mais conteúdo relacionado

Mais procurados

Docker 最佳实践
Docker 最佳实践Docker 最佳实践
Docker 最佳实践YuLing Liu
 
認識程式交易
認識程式交易認識程式交易
認識程式交易Philip Zheng
 
VSCode Remote Development 介紹
VSCode Remote Development 介紹VSCode Remote Development 介紹
VSCode Remote Development 介紹Philip Zheng
 
Docker 淺入淺出
Docker 淺入淺出Docker 淺入淺出
Docker 淺入淺出Miles Chou
 
理財機器人技術簡介與實作經驗分享
理財機器人技術簡介與實作經驗分享理財機器人技術簡介與實作經驗分享
理財機器人技術簡介與實作經驗分享Philip Zheng
 
Docker home ted
Docker home tedDocker home ted
Docker home tedLayne Peng
 
容器與 Gitlab CI 應用
容器與 Gitlab CI 應用容器與 Gitlab CI 應用
容器與 Gitlab CI 應用Philip Zheng
 
十二項架構設計原則
十二項架構設計原則十二項架構設計原則
十二項架構設計原則Philip Zheng
 
Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲
Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲
Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲ChinaNetCloud
 
Kubernetes project update and how to contribute
Kubernetes project update and how to contributeKubernetes project update and how to contribute
Kubernetes project update and how to contributeinwin stack
 
Rancher: 建立你的牧場艦隊
Rancher: 建立你的牧場艦隊Rancher: 建立你的牧場艦隊
Rancher: 建立你的牧場艦隊Miles Chou
 
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)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
 
開發人員不可不知的 Windows Container 容器技術預覽
開發人員不可不知的 Windows Container 容器技術預覽開發人員不可不知的 Windows Container 容器技術預覽
開發人員不可不知的 Windows Container 容器技術預覽Will Huang
 
Cloud Foundry Introduction
Cloud Foundry IntroductionCloud Foundry Introduction
Cloud Foundry Introduction家弘 周
 
Docker
DockerDocker
DockerNCUDSC
 
Linux Container Introduction
Linux Container IntroductionLinux Container Introduction
Linux Container Introduction家弘 周
 
理財機器人技術簡介與實作經驗分享
理財機器人技術簡介與實作經驗分享理財機器人技術簡介與實作經驗分享
理財機器人技術簡介與實作經驗分享Philip Zheng
 
Docker - 30秒生出100台伺服器
Docker - 30秒生出100台伺服器Docker - 30秒生出100台伺服器
Docker - 30秒生出100台伺服器升煌 黃
 

Mais procurados (20)

Docker 最佳实践
Docker 最佳实践Docker 最佳实践
Docker 最佳实践
 
認識程式交易
認識程式交易認識程式交易
認識程式交易
 
VSCode Remote Development 介紹
VSCode Remote Development 介紹VSCode Remote Development 介紹
VSCode Remote Development 介紹
 
Docker 淺入淺出
Docker 淺入淺出Docker 淺入淺出
Docker 淺入淺出
 
理財機器人技術簡介與實作經驗分享
理財機器人技術簡介與實作經驗分享理財機器人技術簡介與實作經驗分享
理財機器人技術簡介與實作經驗分享
 
Docker home ted
Docker home tedDocker home ted
Docker home ted
 
容器與 Gitlab CI 應用
容器與 Gitlab CI 應用容器與 Gitlab CI 應用
容器與 Gitlab CI 應用
 
十二項架構設計原則
十二項架構設計原則十二項架構設計原則
十二項架構設計原則
 
Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲
Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲
Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲
 
Kubernetes project update and how to contribute
Kubernetes project update and how to contributeKubernetes project update and how to contribute
Kubernetes project update and how to contribute
 
微服務自己動手做
微服務自己動手做微服務自己動手做
微服務自己動手做
 
Rancher: 建立你的牧場艦隊
Rancher: 建立你的牧場艦隊Rancher: 建立你的牧場艦隊
Rancher: 建立你的牧場艦隊
 
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)
 
Windows Container 101: dotNET, Container, Kubernetes
Windows Container 101: dotNET, Container, KubernetesWindows Container 101: dotNET, Container, Kubernetes
Windows Container 101: dotNET, Container, Kubernetes
 
開發人員不可不知的 Windows Container 容器技術預覽
開發人員不可不知的 Windows Container 容器技術預覽開發人員不可不知的 Windows Container 容器技術預覽
開發人員不可不知的 Windows Container 容器技術預覽
 
Cloud Foundry Introduction
Cloud Foundry IntroductionCloud Foundry Introduction
Cloud Foundry Introduction
 
Docker
DockerDocker
Docker
 
Linux Container Introduction
Linux Container IntroductionLinux Container Introduction
Linux Container Introduction
 
理財機器人技術簡介與實作經驗分享
理財機器人技術簡介與實作經驗分享理財機器人技術簡介與實作經驗分享
理財機器人技術簡介與實作經驗分享
 
Docker - 30秒生出100台伺服器
Docker - 30秒生出100台伺服器Docker - 30秒生出100台伺服器
Docker - 30秒生出100台伺服器
 

Semelhante a Docker容器微服務 x WorkShop

docker intro
docker introdocker intro
docker introkoji lin
 
Docker open stack
Docker open stackDocker open stack
Docker open stackGuangya Liu
 
Docker Compose
Docker ComposeDocker Compose
Docker ComposeMiles Chou
 
Docker一期培训
Docker一期培训Docker一期培训
Docker一期培训青帅 常
 
Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to DockerChris Chen
 
Gops2016 云端基于Docker的微服务与持续交付实践
Gops2016 云端基于Docker的微服务与持续交付实践Gops2016 云端基于Docker的微服务与持续交付实践
Gops2016 云端基于Docker的微服务与持续交付实践Li Yi
 
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進階探討
Docker進階探討Docker進階探討
Docker進階探討國昭 張
 
快速上手 Windows Containers 容器技術 (Docker Taipei)
快速上手 Windows Containers 容器技術 (Docker Taipei)快速上手 Windows Containers 容器技術 (Docker Taipei)
快速上手 Windows Containers 容器技術 (Docker Taipei)Will Huang
 
從軟體開發角度
談 Docker 的應用
從軟體開發角度
談 Docker 的應用從軟體開發角度
談 Docker 的應用
從軟體開發角度
談 Docker 的應用謝 宗穎
 
Docker In-Depth
Docker In-DepthDocker In-Depth
Docker In-DepthDavid Hsu
 
NodeJS基礎教學&簡介
NodeJS基礎教學&簡介NodeJS基礎教學&簡介
NodeJS基礎教學&簡介GO LL
 
Docker tutorial
Docker tutorialDocker tutorial
Docker tutorialazole Lai
 
Docker workshop
Docker workshopDocker workshop
Docker workshopWei Tung
 

Semelhante a Docker容器微服務 x WorkShop (20)

Docker應用
Docker應用Docker應用
Docker應用
 
docker intro
docker introdocker intro
docker intro
 
Docker open stack
Docker open stackDocker open stack
Docker open stack
 
Docker Compose
Docker ComposeDocker Compose
Docker Compose
 
Docker一期培训
Docker一期培训Docker一期培训
Docker一期培训
 
Docker實務
Docker實務Docker實務
Docker實務
 
Docker基礎
Docker基礎Docker基礎
Docker基礎
 
Docker Build
Docker BuildDocker Build
Docker Build
 
Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to Docker
 
Docker
DockerDocker
Docker
 
Gops2016 云端基于Docker的微服务与持续交付实践
Gops2016 云端基于Docker的微服务与持续交付实践Gops2016 云端基于Docker的微服务与持续交付实践
Gops2016 云端基于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 容器
 
Docker基礎
Docker基礎Docker基礎
Docker基礎
 
Docker進階探討
Docker進階探討Docker進階探討
Docker進階探討
 
快速上手 Windows Containers 容器技術 (Docker Taipei)
快速上手 Windows Containers 容器技術 (Docker Taipei)快速上手 Windows Containers 容器技術 (Docker Taipei)
快速上手 Windows Containers 容器技術 (Docker Taipei)
 
從軟體開發角度
談 Docker 的應用
從軟體開發角度
談 Docker 的應用從軟體開發角度
談 Docker 的應用
從軟體開發角度
談 Docker 的應用
 
Docker In-Depth
Docker In-DepthDocker In-Depth
Docker In-Depth
 
NodeJS基礎教學&簡介
NodeJS基礎教學&簡介NodeJS基礎教學&簡介
NodeJS基礎教學&簡介
 
Docker tutorial
Docker tutorialDocker tutorial
Docker tutorial
 
Docker workshop
Docker workshopDocker workshop
Docker workshop
 

Mais de Philip Zheng

從零開始做架構圖
從零開始做架構圖從零開始做架構圖
從零開始做架構圖Philip Zheng
 
Cloud Native Practice
Cloud Native PracticeCloud Native Practice
Cloud Native PracticePhilip Zheng
 
容器式高效率 ChatBot 開發方法
容器式高效率 ChatBot 開發方法容器式高效率 ChatBot 開發方法
容器式高效率 ChatBot 開發方法Philip Zheng
 
容器與資料科學應用
容器與資料科學應用容器與資料科學應用
容器與資料科學應用Philip Zheng
 
容器與IoT端點應用
容器與IoT端點應用容器與IoT端點應用
容器與IoT端點應用Philip Zheng
 
Docker 進階實務班
Docker 進階實務班Docker 進階實務班
Docker 進階實務班Philip Zheng
 
桃園市教育局Docker技術入門與實作
桃園市教育局Docker技術入門與實作桃園市教育局Docker技術入門與實作
桃園市教育局Docker技術入門與實作Philip Zheng
 
時代在變 Docker 要會:台北 Docker 一日入門篇
時代在變 Docker 要會:台北 Docker 一日入門篇時代在變 Docker 要會:台北 Docker 一日入門篇
時代在變 Docker 要會:台北 Docker 一日入門篇Philip Zheng
 
手把手帶你學 Docker 入門篇
手把手帶你學 Docker 入門篇手把手帶你學 Docker 入門篇
手把手帶你學 Docker 入門篇Philip Zheng
 
程式交易介紹及 FinTech 創作分享
程式交易介紹及 FinTech 創作分享程式交易介紹及 FinTech 創作分享
程式交易介紹及 FinTech 創作分享Philip Zheng
 
人工智能在量化投资分析中的实践
人工智能在量化投资分析中的实践人工智能在量化投资分析中的实践
人工智能在量化投资分析中的实践Philip Zheng
 
Trading bot演算法與軟工在程式交易上的實踐
Trading bot演算法與軟工在程式交易上的實踐Trading bot演算法與軟工在程式交易上的實踐
Trading bot演算法與軟工在程式交易上的實踐Philip Zheng
 
程式交易面面觀
程式交易面面觀程式交易面面觀
程式交易面面觀Philip Zheng
 

Mais de Philip Zheng (16)

從零開始做架構圖
從零開始做架構圖從零開始做架構圖
從零開始做架構圖
 
Apahce Ignite
Apahce IgniteApahce Ignite
Apahce Ignite
 
Cloud Native Practice
Cloud Native PracticeCloud Native Practice
Cloud Native Practice
 
容器式高效率 ChatBot 開發方法
容器式高效率 ChatBot 開發方法容器式高效率 ChatBot 開發方法
容器式高效率 ChatBot 開發方法
 
容器與資料科學應用
容器與資料科學應用容器與資料科學應用
容器與資料科學應用
 
容器與IoT端點應用
容器與IoT端點應用容器與IoT端點應用
容器與IoT端點應用
 
Docker 進階實務班
Docker 進階實務班Docker 進階實務班
Docker 進階實務班
 
桃園市教育局Docker技術入門與實作
桃園市教育局Docker技術入門與實作桃園市教育局Docker技術入門與實作
桃園市教育局Docker技術入門與實作
 
時代在變 Docker 要會:台北 Docker 一日入門篇
時代在變 Docker 要會:台北 Docker 一日入門篇時代在變 Docker 要會:台北 Docker 一日入門篇
時代在變 Docker 要會:台北 Docker 一日入門篇
 
手把手帶你學 Docker 入門篇
手把手帶你學 Docker 入門篇手把手帶你學 Docker 入門篇
手把手帶你學 Docker 入門篇
 
程式交易介紹及 FinTech 創作分享
程式交易介紹及 FinTech 創作分享程式交易介紹及 FinTech 創作分享
程式交易介紹及 FinTech 創作分享
 
人工智能在量化投资分析中的实践
人工智能在量化投资分析中的实践人工智能在量化投资分析中的实践
人工智能在量化投资分析中的实践
 
Trading bot演算法與軟工在程式交易上的實踐
Trading bot演算法與軟工在程式交易上的實踐Trading bot演算法與軟工在程式交易上的實踐
Trading bot演算法與軟工在程式交易上的實踐
 
程式交易面面觀
程式交易面面觀程式交易面面觀
程式交易面面觀
 
Docker & GitLab
Docker & GitLabDocker & GitLab
Docker & GitLab
 
Docker研習營
Docker研習營Docker研習營
Docker研習營
 

Docker容器微服務 x WorkShop