SlideShare una empresa de Scribd logo
1 de 85
Docker實務
大綱
• Docker基本概念
• Docker基本應用
• Docker與微服務
• Docker在CI上的應用
Docker Engine
管理所有Docker相關操作
Docker Compose
多容器定義與協作
Docker Swarm
跨主機多容器協作
Docker Machine
Docker Engine的執行環境
Docker Registry
存放容器映象檔的地方
Kitematic
提供Docker UI操作介面
libnetwork
容器網路模型
Notary
安全性管理
libcontainer
封裝Linux container部份的技術
Docker
工
具
Docker執行
Docker Daemon
Containers Images
RegistryDocker_Host
docker build
docker pull
docker run
Client
Docker架構
LXC
Docker
NamespacesCGroups
Linux Kernel
Layer FS
• Docker藉由包裝LXC提供友善的容器存取API
• Docker的印象檔技術大幅仰賴Layer FS來達成
• 實際上,Linux本身核心就具有容器的相關功能
LXC(Linux Container)
• LXC利用作業系統的內核(Kernel)所提供的功能,來達成容器化。
• 容器
Containers Containers Containers
Management Interface
Namespaces cgroups SELinux
Drivers
Hardware
Docker是個插件式架構
概念對照
Docker for windows 架構
Docker Engine
Hyper-V: VM
實體機器
• 實際上是跑在Hyper-V的VM上
• 目前Stable的版本僅支援Linux-based的
作業系統
虛擬化
os
Hardware
os
os
App
App
App
Hardware
虛擬化
Before After
os
App
Hardware
Hardware
os
App
Hardware
App
Hardware
os
App
Hardware
Hardware
• 使用虛擬化之前,需要在實體機器上進行
環境建置;很容易造成環境混亂與難以維護
• 實體機器昂貴,但應用程式不一定會使用到
100%所有的資源
• 虛擬化讓實體機器的資源利用率被大幅度
的提高
虛擬機與容器的差別
App
Bins/Libs Bins/Libs
Guest OS
App
VM
App
Bins/Libs Bins/Libs
Guest OS
App
VM
Hypervisor
Host OS
Server
Container Engine
App
Bins/Libs
Host OS
Server
App
Bins/Libs
App
Bins/Libs
LXC LXC LXC
虛擬機 容器
使用:chroot/cgroup/namespaces/
SELinux/AppArmor/netfilter 來達成
隔離效果
容器即沙箱
App
App
App
App
App
App
未限制
存取
沙箱
App App
未限制
存取
無沙箱 有沙箱
在沙箱中,App是處於絕對隔離的狀態
容器的特性
輕量&需要較小的資源
程序&資源完全獨立
快速&易於部署
Container Engine
App
Bins/Libs
Host OS
Server
App
Bins/Libs
App
Bins/Libs
LXC LXC LXC
大綱
• Docker基本概念
• Docker基本應用
• Docker與微服務
• Docker在CI上的應用
Docker指令概念圖
Running Stop
Pause
kill, stop
start
wait
logs
attach
^p, ^q inspect
ps
rm
exec
Container
commit
create
run
info
inspect
events
Engine
images
rmi
tag
history
Images
Host
cp
copy
Tar files
filesystem
Images(s)
Registry
search
login
logout
import
load
save
pull
push
export
port
Dockerfile
build
Docker常用指令
Running Stop
Pause
kill, stop
start
wait
logs
inspect
ps
rm
exec
Container
commit
create
run
images
rmi
tag
history
Images
copy
Host
pull
push
Registry
search
login
logout
Scratch
Public Registry Pull
指令: docker run [參數…] [印象檔名稱]:[標籤] [命令]
功用: 啟動指定印象檔為容器
目的: 開發過程中,經常需要自行建構or從印象檔倉儲取得印象檔到本機
列舉本機容器
指令: docker ps
功用: 列舉出當前本機的容器
目的: 開發過程中,需要確認容器執行的情況;在本例子中,本機目前有一個容器正在執行中。
每一筆列舉的資料有幾個欄位需要特別關注: Status, Ports;這兩個欄位指示了容器的
執行狀態,以及開放給主機(Host)的埠號。
若啟動容器時,沒有指定容器名稱,則Docker會自行給予一個不重覆的隨機名稱,這個
時候就會需要使用docker ps指令來查看容器被賦予的名稱。
備註: 很多時候建議加上參數a(註: 完整指令為docker ps –a);這是因為docker ps預設僅會顯
示還處於運行狀態的容器,但很多時候因為組態不正確導致容器起動失敗,這種情境
就會需要加上參數a才能看到。
容器狀態的改變
kill, stop
start
Stop
Pause
Running
指令: docker [start/stop/pause/unpause] [容器名稱or ID]
功用: 控制容器的運行狀態
目的: 調整容器的運行狀態可以模擬各種容器運行的情境。
備註: 要留意狀態機遞移的規則。
查看容器組態資訊
指令: docker inspect [容器名稱]
功用: 查看指定容器的組態資訊
目的: 開發過程中,需要確認容器的組態資訊,特別是關於網路的部份。
備註: docker inspect指令本身會列印出容器所有的組態資訊,但很多時候只需要某部份
的資料,因此,可以再加上format參數來過濾資訊。
要注意Format路徑是有大小寫之分,且開頭有個點(dot)
查看容器執行過程的紀錄
指令: docker logs [容器名稱]
功用: 查看指定容器的執行紀錄
目的: 當需要偵錯容器時,會需要使用這個指令來查看紀錄。
連線到容器
指令: docker exec [參數…] [容器名稱] [命令]
功用: 執行某個正在運行中的容器的命令
目的: 當需要進到容器中進行細部的控制時,會使用這個指令連線到容器中。
參數ti,其實是兩個參數(-t, -i)的結合,其目的在於將容器的輸出資訊顯
示到視窗中。
複製檔案到容器中
指令: docker cp [本機檔案路徑] [容器名稱]:[容器檔案目標路徑]
docker cp [容器名稱]:[容器檔案路徑] [本機檔案目標路徑]
功用:複製本機/容器的檔案到容器/本機的指定位址
目的: 當需要複製檔案到容器內部,很需要此指令。此指令被大量
應用在應用程式部署。
提交印象檔新版本
指令: docker commit [參數….] [容器ID] [印象檔名稱]:[標籤]
功用: 將容器異動後的內容,提交成為一個新的印象檔
目的: 開發過程中,會需要對基礎印象檔進行一些微調(註:為了效能),為了避免重複的執行
相同的動作。
資料卷
Docker Engine
Mount
Volume Plugin
Device
Storage 平台
Docker主機
• 容器本身不會將資料持久化;當容器執行完畢
之後,所有資料都將消失
• 容器可以綁定資料卷,將資料持久化到儲存裝
置上
• Docker提供Plugin機制,讓資料持久化能有更高
的擴充性
資料卷操作模式-主機掛載
Docker Engine
Mount Device
Storage
Docker主機
• 在啟動一個容器時,加上-v的旗標來指示
要將主機上那一個資料夾作為資料卷掛載
到容器中的那一個資料夾
• 無法直接掛載遠端機器上的資料卷
資料卷操作模式-資料卷容器
Docker Engine
Docker主機
• 創建一個資料卷容器是為了讓資料可以
更方便的被其它容器共用
• 使用docker create –v的方式來創建一個
資料卷容器
• 其它容器可以使用--volumes-from指示來
存取資料卷容器
--volumes-from --volumes-from
Docker create -v
資料卷操作模式-資料卷插件
Docker Engine Volume Plugin
Storage 平台
Docker主機
• Docker插件是一個Web Service服務以背景
服務的方式在主機上運行
• 資料使用Http並以Json資料格式傳輸
• 插件的運行是自行管理,不受Docker Daemon
干涉
• 以docker volume create創建插件
• 以- -volume-driver指定使用的資料卷插件
資料卷容器範例
• 採用資料卷容器的好處在於其它容器只需要
和它綁定,就能夠共享持久化的資料
• 資料卷容器同樣有資料卷遺留的問題,需要定期
清除沒用到的資料卷
Step1. 創建一個資料卷容器,並且映射到主機某個位置
Step2. 以volumes-from指示要與那個資料卷容器綁定
具名資料卷範例
Step1. 創建一個名為temp的資料卷
Step2. 檢視是否有創建成功
Step3. 創建容器並且添加一個檔案:Blah
Step4. 創建第二容器並且檢查是否有檔案:Blah
• 這種創建資料卷的方式,帶來的壞處就是
它與主機是綁定的;只能在這台主機才能
共用這個資料卷
• 資料卷若沒用到記得要定期刪除,可用指令:
docker system prune
倉儲(Registry) –應用
RegistryImage
Container
Dockerfile
Backup.tar
commit run
save
load
stop/start/restart
tag
本機Docker實體
build
push
pull
本機
• 在開發的過程中利用公有倉儲取得印象檔
• 使用Dockerfile建構出所需要的印象檔,
接著再推到私有倉儲做管理
架設私有倉儲
指令: docker run –d –p 5000:5000 –v [本機路徑]:[容器路徑] registry
功用: 架設一個私人的印象檔倉儲
目的: 團隊共享印象檔,為CI/CD奠定基礎。
印象檔名稱解析
Remote-dockerhub.com/namespace/busybox:latest
(遠端映象檔來源Url) (命名空間) (倉儲) (標籤)
• 遠端印象檔來源Url: 集中存放印象檔的Web伺服器位址
• 命名空間: 使用者帳號/組織中所有印象檔的集合
• 倉儲: 一個倉儲可以有多個印象檔
• 標籤: 用來區分同一個用來區分印象檔的不同版本
推送印象檔到私有倉儲
指令:
(步驟1) docker tag [私有倉儲Url]/[印象檔名稱]:[標籤]
(步驟2) docker push [私有倉儲Url]/[印象檔名稱]:[標籤]
功用: 將本機的印象檔推送到私有倉儲間共享
目的: 讓印象檔在團隊。
從私有倉儲拉取印象檔
指令: docker pull[私有倉儲Url]/[印象檔名稱]:[標籤]
功用: 將本機的印象檔推送到私有倉儲間共享
目的: 讓印象檔在團隊。
Docker網路概念
Endpoint
網路沙箱
Docker容器
網路1
Endpoint
網路沙箱
Docker容器
Endpoint
網路2
Endpoint
網路沙箱
Docker容器• 沙箱: 是一個隔離的網路
執行環境,儲放了容器網
路棧(Stack)的組態
• 端點(Endpoint): 將沙箱加
入到一個網路;採用
veth pair來實做
• 網路: 網路包括一組能互相
通訊的端點
• 一個端點只能隸屬於一個沙箱及一個網路,
透過給沙箱添加多個端點,可以讓沙箱加入
多的網路
• 沙箱是用Linux的Network Namespace來實現的
Docker網路模式- 主機
eth0
Container
eth0
Docker主機
• 容器會直接繼承自主機的網路設定
• 兩者所有的IP設定會是一致的
Docker網路模式- 網路橋接器
Container
eth0
Docker主機
vethxxx
docker0
eth0
veth pair
iptable
• Docker預設有一個名為:docker0的網路橋接器
• 當使用者沒有指定容器運行的模式,預設會直接套用橋接器模式
Docker網路模式- 無網路
Container
Docker主機
• 容器的運行如果需要自行設定網路組態,則需要強制設定無網路模式
• 一旦設定了無網路模式,就需要以exec指令進入運行中的容器,進行
網路組態的手動設定
Docker網路模式- Overlay
Container
eth0
Docker主機
vethxxx
docker0
eth0
veth pair
iptable
Container
eth0
Docker主機
vethxxx
docker0
eth0
veth pair
iptable
vxlanvxlan
eth1 eth1
• Overlay網路應用在跨主機網路通訊之用
• 僅能在處於Swarm模式且為管理節點上創建Overlay網路
使用Dockerfile來創建印象檔
• Dockerfile是一個文本格式的組態文件
• 使用者可以使用Dockerfile快速創建自定義的印象檔
依Dockerfile創建印象檔
…略…
指令: docker build –t [印象檔名稱]:[標籤] [Dockerfile路徑]
功用: 創建印象檔
目的: 將瑣碎的步驟以Dockerfile描述,以便更方便的創建
容器印象檔。
備註: 創建容器時可以使用.dockerignore檔案指明,那些
檔案不要被載入到處理緩充區中
完成
Dockerfile設定變數
• 使用ENV指令宣告一個變數,並且給予預設值
• 宣告完後的其它檔案部份都可以使用$變數名, 或是${變數名}
來使用這個變數
• $本身是特殊符號,在某些情境下需要使用跳脫符號()
• 某些時候需要有替代值時,可以參考特殊的取值格式如下表格所示
格式 描述
${變數名:-替代值} 若變數沒有被設定值,則取用替代值;否則為變數值
${變數名:+替代值} 若變數有被設定值,則取用替代值;否則為空字串
變數取值的格式
檢視印象檔的結構
映象檔
• 印象檔的資料結構:
• 元資料(Metadata)
• 多層印象檔
• 元資料紀錄了整個印象檔的相關資訊,
包含組態資訊與每層的檔案大小
• 當印象檔的層數越多,則相對地會產生
許多瑣碎的小檔案,不利於I/O
• 印象檔無法加密,但可以使用notary簽名機制
Layer FS
• 印象檔內部結構是採用Layer式,
當它被運行成容器後,上面會多一層
可編輯層
• 編輯層的任何修改都不會影響到原本
印象檔內的檔案層
• 若要套用編輯層的異動,需要額外以Docker
命令套用,並且生成一個新的印象檔
AUFS與Cow(Copy on write)
File 1 File 2
File 3
File 4
File 1 .wh.File 3 Top層
基底層
第一層
第二層
• 上層印象檔依賴於下層,每層印象檔都是Read-only
• 啟動後的容器,最頂層是Writeable
• 若某個檔案是第一次被修改,頂層會從底層copy檔案;
若某個檔案被刪除,則會以whiteout檔案來取代
印象檔的儲存機制- Content Addressable
Storage(CAS)
• 印象檔中的分層透過內容加密Hash來引用與
儲存
• 提供了更高的安全性,也避免了ID衝突的問題
• 容器的ID依然是採用隨機產生的UUID,而其內
的每層都是依內容所產生的Hash值
Pull/Run指令底層機制
Registry
檢查頂層UUID是否相同
• 是: do nothing
• 否: Pull
Docker Compose
• Docker compose是應用在多容器協作的情境
• 使用Docker Compose之後,就不需要使用Shell
來啟動多個容器
• 僅需要一個組態檔案,就可以啟動多個容器,
並且處理好多個容器之間的鏈接和依賴
Docker Compose 組態檔案
version: [版本]
services:
[服務名稱]:
build 或 image: …
ports:
- “port映射”
networks:
- [網路1]
volumes:
- [位址]
volumes:
[位址]:
networkds:
[網路名稱]:
• 目前最新是第三版
• Yml的結構為階層式,除了第一階層,餘下每個階層
都是以”兩個空白”開頭
• 服務可以有多個,若彼此是使用link來串連,則啟動
時,docker-compose會依序啟動容器
(建議仍是採用network的方式來串起多個容器)
docker-compose.yml
Docker Compose的撰寫指南
• Docker compose會在執行docker-compose up命令的時候,自動建構一個網路給
所有定義在組態檔案內的服務使用
• 早期常會使用link指令去串連指定的服務,但彼此會因為啟動的順序而造成docker-compose
啟動時間變得冗長
• 當前可以使用depends_on來取代link,如此一來,服務的啟動不需要等待彼此,速度會更快
Docker Compose的Volumes設定概念
• 常會看到在第一階層定義了一個volumes,
但是在每個服務內部又有一個volumes
• 第一階的volumes定義的是資料卷名稱後綴(Postfix)
• 可在第一階後綴添加存取權限(例: ro/rw)
• 資料卷的名稱則是:
專案(資料夾名稱)/服務_定義的名稱(註:db_data)
redis
db
vote
result
worker
visualizer
複本數量
同時更新的
容器數
批次更新間隔時間
重啟模式
部署的偏好
服務啟動相依性(控制服務間的啟動順序)
以Dockerfile為印象檔來源
設定容器資源限制/最低需求
重啟的等待設定(避免資源耗竭)
容器的元資訊(Metadata)
強迫中止前的等待時間
Docker Machine
• 採用Go語言撰寫
• 支援多種後端驅動,包括:虛擬機,和雲平台
• 可以使用-d來指示要使用的驅動,目前支援的有:
• Amazon EC2
• Azure
• Digitalocean
• Exoscale
• Generic
• Google
• None
• Openstack
• Rackspace
• Softlayer
• Virtualbox
• VMware vCloudair
• VMware vSphere
Docker Machine的建構
創建一個Docker Machine
- 以Hyper-V為例
docker-machine create –d hyperv - -hyperv-virtual-switch “[虛擬機網路名稱]” [docker主機名稱]
Docker Swarm架構
Store
Scheduler
Discovery
Service
Swarm Manager Docker
Client
Docker APIs
over HTTP
Docker
Hub
Docker
Daemon
Swarm Node
Docker
Daemon
Swarm Node
Docker
Daemon
Swarm Node
HTTPHTTP
Docker APIs
over HTTP
• 在使用Swarm管理叢集時,會有一群扮演Manager,
以及工作節點。
• Client只需要和Manager溝通,而Manager會依據
Discovery Service的資訊來選擇一個工作節點來服務
Swarm系統結構
Docker Worker Node
tcp://localhost:2375
Docker Worker Node
tcp://localhost:2375
Docker Worker Node
tcp://localhost:2375
Docker Client
strategy
random
binpacking
spread
*cluster
filter
affinity
health
constraint
port
dependency
node discovery
health
label
…
cluster
…
node
node
node
Server
Handlers
tcp://localhost:2375
Swarm
• Swarm的管理節點本身並不運行容器,它不過是:
路由器+排程器
• 用戶藉由Docker Client與Swarm的管理節點溝通,而管理節點
會依據Discovery服務去選擇某個工作節點來啟動容器
• 由於Swarm的管理節點本身沒有運行容器,因此,就算它停擺
了也不會造成整個系統的崩潰
以Swarm Mode建構Swarm-
創建Docker-machine
docker-machine create –d hyperv - -hyperv-virtual-switch “[虛擬機網路名稱]” [docker主機名稱]
• 需要創建兩個族群的docker-machine;一組是工作節點,另一組則是管理節點
• 每個族群約莫都要2個以上的docker-machine
以Swarm Mode建構Swarm-
初始化Swarm模式
docker-machine ssh manager1 “docker swarm init - -listen-addr [manager1 IP]
--advertise-addr [manager1 IP]”
• 在接下來的所有Swarm操作都會需要用到各個docker-machine的IP資訊
• 使用docker-machine ls可以看到當前Hyper-V中所有的資訊
以Swarm Mode建構Swarm-
取得Join-Token
docker-machine ssh manager1 “docker swarm join-token manager -q”
docker-machine ssh manager1 “docker swarm join-token worker -q”
Manager Token:
Worker Token:
• 要特別小心Token一共有兩種,這兩個Token是用來讓其它docker-machine加入;
依照不同族群可以使用不同Token去加入Swarm
• 由於待會一直會需要用到,可以先將這兩個Token複製
以Swarm Mode建構Swarm-
添加一個管理節點
docker-machine ssh manager2 “docker swarm join - -token [manager token] - -listen-addr [manager2 IP]
--advertise-addr [manager2 IP] [manager1 IP]”
• 由於是要加入到管理族群,所使用的Token就必須是管理的Token
• 參數--advertise-addr: 其它節點可以用這個位址存取到管理節點
以Swarm Mode建構Swarm-
添加一個工作節點
docker-machine ssh worker1 “docker swarm join - -token [worker token]
--advertise-addr [worker1 IP] [manager1 IP]”
• 由於是要加入到工作族群,所使用的Token就必須是工作的Token
• 工作節點所需要的參數不像管理節點那麼多
以Swarm Mode建構Swarm-
觀察Swarm節點的狀況
• 當所有節點都加入完成之後,記得一定要在使用這個指令檢查一下是否有問題
• 這個指令只能應用在管理節點
docker-machine ssh manager1 “docker node ls”
範例: Wordpress-
複製到docker-machine
使用winScp連線,預設的帳號/密碼: docker/tcuser
範例: Wordpress-
部署服務
docker-machine ssh manager1 “docker stack deploy - -compose-file docker-compose.yml vassiblity”
• wordpress可以被省略;其為服務的前綴字
• 使用stack deploy會自動為其構建網路
範例: Wordpress-
以瀏覽器連線到Wordpress
網址: http://10.66.66.142:8000
範例: Wordpress-
將Wordpress服務擴充為3個
docker-machine ssh manager1 “docker service scale [服務名稱]=[擴充到N個節點數]”
• 服務的名稱可以使用docker service ls來觀察
• 除了可以使用docker service scale來擴展服務之外,還可以使用docker service update
docker-machine ssh manager1 “docker service ls”
範例: Wordpress-
視覺化觀察Swarm的容器部署
docker-machine ssh manager1 “docker service create --name=viz --publish=8080:8080/tcp
--constraint=node.role==manager --mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock
dockersamples/visualizer
10.66.66.142:8080
大綱
• Docker基本概念
• Docker基本應用
• Docker與微服務
• Docker在CI上的應用
單片式(Monolithic) V.S. 微服務(MicroService)
微服務藍圖
客戶端
服務端
以API Gateway隔離外部客戶端
與內部服務
單一入口
API Gateway的實現
GraphQL
REST需要更多操作 GraphQL只需一次
服務協作
每一個服務都完全自治
彼此會以RESTfull API溝通
服務通訊-同步&非同步
服務的通訊間,可以揉合
同步與非同步通訊,這要
視其服務特性與架構品質優先權而定
服務探索
• 分散式系統其中一項最重要的
項目就是: 服務探索
• 每一個服務都有可能因為異外
而被重啟,重啟之後可能被設定
不同的組態(例:IP),為了讓服務
之間溝通能夠順利,需要具備
服務探索的特性
Swarm Mode內建LB,Service Discovery
Swarm模式的服務探索
Docker
Engine
Swarm Node
DNS Server
DNS Resolver DNS Resolver
DNS requests
Docker
Engine
Swarm Node
DNS Server
DNS Resolver DNS Resolver
DNS requests
以Gossip協定
同步資訊
• Swarm模式下的每個節點,其Docker Engine都會
有DNS Server,而每個節點會在網路模組的
Control Plane上以Gossip協定彼此交換訊息
• Swarm模式中的服務都會被指派一個DNS入口
(Entry)
Swarm模式的Load Balance
分散式交易
Place Order1
2 3
4
56
Order
Created Event
Order
Created Event
Credit
Reserved
Credit
Reserved
藉由BASE模型來達成分散式
系統的交易
容器化部署
• 將每項服務包裝成容器的印象檔
• 將容器部署到每一台VM中,以容器
運行服務
Swarm與微服務系統架構概念
API Gateway
Manager
Worker
Infra
Visualizer
API Gateway
API Gateway
Prometheus
DMZ
cAdvisor
cAdvisor
Manager
Worker
Infra
Visualizer
Svc
Prometheus
Intranet
cAdvisor
cAdvisor
Svc
Svc
網路
大綱
• Docker基本概念
• Docker基本應用
• Docker與微服務
• Docker在CI上的應用
Feature
Build/Compile
Artifact
Containerize
Versionize Image
Ship to RegistryDeploy and Run
Anywhere
Orchestrate Container
Pull Images To
Environments
Run Automated
Tests
QA
CI Tool
Merge Branch
Create Pull
Request
Create Branch
Dev
Reviewer
Source Code
Registry
Container
DevOper
Docker Swarm
CI/CD流程
Container
Container
Pull Images To
Environments
結語
• Docker是一款輕量的虛擬化工具
• Docker可以消弭環境上的差異
• 容器是針對單一服務部署之用,而不是整個系統架構的載體

Más contenido relacionado

La actualidad más candente

Docker home ted
Docker home tedDocker home ted
Docker home tedLayne Peng
 
Docker Compose
Docker ComposeDocker Compose
Docker ComposeMiles Chou
 
DAE 新变化介绍
DAE 新变化介绍DAE 新变化介绍
DAE 新变化介绍Tianwei Liu
 
Docker open stack
Docker open stackDocker open stack
Docker open stackGuangya Liu
 
Docker集群管理 工具篇
Docker集群管理 工具篇Docker集群管理 工具篇
Docker集群管理 工具篇Guangya Liu
 
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
 
Large-Scale Cluster Mangement & Kubernetes Under The Hood
Large-Scale Cluster Mangement & Kubernetes Under The HoodLarge-Scale Cluster Mangement & Kubernetes Under The Hood
Large-Scale Cluster Mangement & Kubernetes Under The HoodLei (Harry) Zhang
 
Docker tutorial
Docker tutorialDocker tutorial
Docker tutorialazole Lai
 
Docker - 30秒生出100台伺服器
Docker - 30秒生出100台伺服器Docker - 30秒生出100台伺服器
Docker - 30秒生出100台伺服器升煌 黃
 
Openstack neutron 原理详解
Openstack neutron 原理详解Openstack neutron 原理详解
Openstack neutron 原理详解Yong Luo
 
認識那條鯨魚 Docker 初探
認識那條鯨魚   Docker 初探認識那條鯨魚   Docker 初探
認識那條鯨魚 Docker 初探仲昀 王
 
快速上手 Windows Containers 容器技術 (Docker Taipei)
快速上手 Windows Containers 容器技術 (Docker Taipei)快速上手 Windows Containers 容器技術 (Docker Taipei)
快速上手 Windows Containers 容器技術 (Docker Taipei)Will Huang
 
20150604 docker 新手入門
20150604 docker 新手入門20150604 docker 新手入門
20150604 docker 新手入門azole Lai
 
cec-hello-docker
cec-hello-dockercec-hello-docker
cec-hello-dockerBruce Huang
 
Deployment with Capistrano
Deployment with CapistranoDeployment with Capistrano
Deployment with Capistrano旭 張
 
企業導入微服務實戰 - updated
企業導入微服務實戰 - updated企業導入微服務實戰 - updated
企業導入微服務實戰 - updatedPaul Chao
 
Docker 淺入淺出
Docker 淺入淺出Docker 淺入淺出
Docker 淺入淺出Miles Chou
 
廣宣學堂: 企業導入微服務實戰
廣宣學堂: 企業導入微服務實戰廣宣學堂: 企業導入微服務實戰
廣宣學堂: 企業導入微服務實戰Paul Chao
 

La actualidad más candente (20)

Docker home ted
Docker home tedDocker home ted
Docker home ted
 
Docker Compose
Docker ComposeDocker Compose
Docker Compose
 
DAE 新变化介绍
DAE 新变化介绍DAE 新变化介绍
DAE 新变化介绍
 
Docker open stack
Docker open stackDocker open stack
Docker open stack
 
Docker集群管理 工具篇
Docker集群管理 工具篇Docker集群管理 工具篇
Docker集群管理 工具篇
 
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 容器
 
Large-Scale Cluster Mangement & Kubernetes Under The Hood
Large-Scale Cluster Mangement & Kubernetes Under The HoodLarge-Scale Cluster Mangement & Kubernetes Under The Hood
Large-Scale Cluster Mangement & Kubernetes Under The Hood
 
Docker tutorial
Docker tutorialDocker tutorial
Docker tutorial
 
Docker - 30秒生出100台伺服器
Docker - 30秒生出100台伺服器Docker - 30秒生出100台伺服器
Docker - 30秒生出100台伺服器
 
Docker Build
Docker BuildDocker Build
Docker Build
 
Openstack neutron 原理详解
Openstack neutron 原理详解Openstack neutron 原理详解
Openstack neutron 原理详解
 
認識那條鯨魚 Docker 初探
認識那條鯨魚   Docker 初探認識那條鯨魚   Docker 初探
認識那條鯨魚 Docker 初探
 
快速上手 Windows Containers 容器技術 (Docker Taipei)
快速上手 Windows Containers 容器技術 (Docker Taipei)快速上手 Windows Containers 容器技術 (Docker Taipei)
快速上手 Windows Containers 容器技術 (Docker Taipei)
 
20150604 docker 新手入門
20150604 docker 新手入門20150604 docker 新手入門
20150604 docker 新手入門
 
cec-hello-docker
cec-hello-dockercec-hello-docker
cec-hello-docker
 
Deployment with Capistrano
Deployment with CapistranoDeployment with Capistrano
Deployment with Capistrano
 
企業導入微服務實戰 - updated
企業導入微服務實戰 - updated企業導入微服務實戰 - updated
企業導入微服務實戰 - updated
 
Docker 淺入淺出
Docker 淺入淺出Docker 淺入淺出
Docker 淺入淺出
 
廣宣學堂: 企業導入微服務實戰
廣宣學堂: 企業導入微服務實戰廣宣學堂: 企業導入微服務實戰
廣宣學堂: 企業導入微服務實戰
 

Similar a Docker實務

Docker容器微服務 x WorkShop
Docker容器微服務 x WorkShopDocker容器微服務 x WorkShop
Docker容器微服務 x WorkShopPhilip Zheng
 
docker intro
docker introdocker intro
docker introkoji lin
 
桃園市教育局Docker技術入門與實作
桃園市教育局Docker技術入門與實作桃園市教育局Docker技術入門與實作
桃園市教育局Docker技術入門與實作Philip Zheng
 
美团点评技术沙龙14美团云-Docker平台
美团点评技术沙龙14美团云-Docker平台美团点评技术沙龙14美团云-Docker平台
美团点评技术沙龙14美团云-Docker平台美团点评技术团队
 
Docker workshop
Docker workshopDocker workshop
Docker workshopWei Tung
 
開發人員不可不知的 Windows Container 容器技術預覽
開發人員不可不知的 Windows Container 容器技術預覽開發人員不可不知的 Windows Container 容器技術預覽
開發人員不可不知的 Windows Container 容器技術預覽Will Huang
 
kubernetes入门培训
kubernetes入门培训kubernetes入门培训
kubernetes入门培训bobo45284
 
Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲
Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲
Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲ChinaNetCloud
 
Azure Container Registry(preview)x Web App On Linux(preview)
Azure Container Registry(preview)x Web App On Linux(preview)Azure Container Registry(preview)x Web App On Linux(preview)
Azure Container Registry(preview)x Web App On Linux(preview)Ch Rick
 
Docker
DockerDocker
DockerNCUDSC
 
企業導入容器經驗分享與開源技能培養
企業導入容器經驗分享與開源技能培養企業導入容器經驗分享與開源技能培養
企業導入容器經驗分享與開源技能培養Philip Zheng
 
K8s removes dockershime
K8s removes dockershimeK8s removes dockershime
K8s removes dockershimePhilip Zheng
 
讓軟體開發與應用更自由 - 使用 Docker 技術
讓軟體開發與應用更自由 - 使用 Docker 技術讓軟體開發與應用更自由 - 使用 Docker 技術
讓軟體開發與應用更自由 - 使用 Docker 技術Yu Lung Shao
 
Docker 最佳实践
Docker 最佳实践Docker 最佳实践
Docker 最佳实践YuLing Liu
 
Docker In-Depth
Docker In-DepthDocker In-Depth
Docker In-DepthDavid Hsu
 
Docker+mesos安装最佳实践
Docker+mesos安装最佳实践Docker+mesos安装最佳实践
Docker+mesos安装最佳实践3908282
 
Rancher: 建立你的牧場艦隊
Rancher: 建立你的牧場艦隊Rancher: 建立你的牧場艦隊
Rancher: 建立你的牧場艦隊Miles Chou
 
OpenStack and Docke Integration V6
OpenStack and Docke Integration V6OpenStack and Docke Integration V6
OpenStack and Docke Integration V6Guangya Liu
 

Similar a Docker實務 (20)

Docker容器微服務 x WorkShop
Docker容器微服務 x WorkShopDocker容器微服務 x WorkShop
Docker容器微服務 x WorkShop
 
docker intro
docker introdocker intro
docker intro
 
桃園市教育局Docker技術入門與實作
桃園市教育局Docker技術入門與實作桃園市教育局Docker技術入門與實作
桃園市教育局Docker技術入門與實作
 
美团点评技术沙龙14美团云-Docker平台
美团点评技术沙龙14美团云-Docker平台美团点评技术沙龙14美团云-Docker平台
美团点评技术沙龙14美团云-Docker平台
 
Docker workshop
Docker workshopDocker workshop
Docker workshop
 
開發人員不可不知的 Windows Container 容器技術預覽
開發人員不可不知的 Windows Container 容器技術預覽開發人員不可不知的 Windows Container 容器技術預覽
開發人員不可不知的 Windows Container 容器技術預覽
 
kubernetes入门培训
kubernetes入门培训kubernetes入门培训
kubernetes入门培训
 
Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲
Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲
Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲
 
Docker 101
Docker 101Docker 101
Docker 101
 
Azure Container Registry(preview)x Web App On Linux(preview)
Azure Container Registry(preview)x Web App On Linux(preview)Azure Container Registry(preview)x Web App On Linux(preview)
Azure Container Registry(preview)x Web App On Linux(preview)
 
Docker
DockerDocker
Docker
 
企業導入容器經驗分享與開源技能培養
企業導入容器經驗分享與開源技能培養企業導入容器經驗分享與開源技能培養
企業導入容器經驗分享與開源技能培養
 
K8s removes dockershime
K8s removes dockershimeK8s removes dockershime
K8s removes dockershime
 
Docker基礎
Docker基礎Docker基礎
Docker基礎
 
讓軟體開發與應用更自由 - 使用 Docker 技術
讓軟體開發與應用更自由 - 使用 Docker 技術讓軟體開發與應用更自由 - 使用 Docker 技術
讓軟體開發與應用更自由 - 使用 Docker 技術
 
Docker 最佳实践
Docker 最佳实践Docker 最佳实践
Docker 最佳实践
 
Docker In-Depth
Docker In-DepthDocker In-Depth
Docker In-Depth
 
Docker+mesos安装最佳实践
Docker+mesos安装最佳实践Docker+mesos安装最佳实践
Docker+mesos安装最佳实践
 
Rancher: 建立你的牧場艦隊
Rancher: 建立你的牧場艦隊Rancher: 建立你的牧場艦隊
Rancher: 建立你的牧場艦隊
 
OpenStack and Docke Integration V6
OpenStack and Docke Integration V6OpenStack and Docke Integration V6
OpenStack and Docke Integration V6
 

Más de 國昭 張

8th ddd taiwan study group bounded context integration
8th ddd taiwan study group  bounded context integration8th ddd taiwan study group  bounded context integration
8th ddd taiwan study group bounded context integration國昭 張
 
Ddd(meetup 2) ddd with clean architecture
Ddd(meetup 2) ddd with clean architectureDdd(meetup 2) ddd with clean architecture
Ddd(meetup 2) ddd with clean architecture國昭 張
 
20190126 ddd-meetup1
20190126 ddd-meetup120190126 ddd-meetup1
20190126 ddd-meetup1國昭 張
 
事件風暴-設計衝刺
事件風暴-設計衝刺事件風暴-設計衝刺
事件風暴-設計衝刺國昭 張
 
事件風暴-領域建模
事件風暴-領域建模事件風暴-領域建模
事件風暴-領域建模國昭 張
 
Scrum essential
Scrum essentialScrum essential
Scrum essential國昭 張
 
DDD架構設計
DDD架構設計DDD架構設計
DDD架構設計國昭 張
 
DDD系統分析
DDD系統分析DDD系統分析
DDD系統分析國昭 張
 
Asp.net core v1.0
Asp.net core v1.0Asp.net core v1.0
Asp.net core v1.0國昭 張
 
Redux+react js
Redux+react jsRedux+react js
Redux+react js國昭 張
 
架構設計-資料存取的選擇
架構設計-資料存取的選擇架構設計-資料存取的選擇
架構設計-資料存取的選擇國昭 張
 
例外處理與單元測試
例外處理與單元測試例外處理與單元測試
例外處理與單元測試國昭 張
 
ASP.Net WebAPI經驗分享
ASP.Net WebAPI經驗分享ASP.Net WebAPI經驗分享
ASP.Net WebAPI經驗分享國昭 張
 
ASP.Net MVC Framework
ASP.Net MVC FrameworkASP.Net MVC Framework
ASP.Net MVC Framework國昭 張
 
Team Foundation Server
Team Foundation ServerTeam Foundation Server
Team Foundation Server國昭 張
 

Más de 國昭 張 (20)

8th ddd taiwan study group bounded context integration
8th ddd taiwan study group  bounded context integration8th ddd taiwan study group  bounded context integration
8th ddd taiwan study group bounded context integration
 
Ddd(meetup 2) ddd with clean architecture
Ddd(meetup 2) ddd with clean architectureDdd(meetup 2) ddd with clean architecture
Ddd(meetup 2) ddd with clean architecture
 
20190126 ddd-meetup1
20190126 ddd-meetup120190126 ddd-meetup1
20190126 ddd-meetup1
 
事件風暴-設計衝刺
事件風暴-設計衝刺事件風暴-設計衝刺
事件風暴-設計衝刺
 
事件風暴-領域建模
事件風暴-領域建模事件風暴-領域建模
事件風暴-領域建模
 
單元測試
單元測試單元測試
單元測試
 
Scrum essential
Scrum essentialScrum essential
Scrum essential
 
Vue
VueVue
Vue
 
DDD架構設計
DDD架構設計DDD架構設計
DDD架構設計
 
DDD系統分析
DDD系統分析DDD系統分析
DDD系統分析
 
DDD引導
DDD引導DDD引導
DDD引導
 
前端測試
前端測試前端測試
前端測試
 
Asp.net core v1.0
Asp.net core v1.0Asp.net core v1.0
Asp.net core v1.0
 
Redux+react js
Redux+react jsRedux+react js
Redux+react js
 
React js
React jsReact js
React js
 
架構設計-資料存取的選擇
架構設計-資料存取的選擇架構設計-資料存取的選擇
架構設計-資料存取的選擇
 
例外處理與單元測試
例外處理與單元測試例外處理與單元測試
例外處理與單元測試
 
ASP.Net WebAPI經驗分享
ASP.Net WebAPI經驗分享ASP.Net WebAPI經驗分享
ASP.Net WebAPI經驗分享
 
ASP.Net MVC Framework
ASP.Net MVC FrameworkASP.Net MVC Framework
ASP.Net MVC Framework
 
Team Foundation Server
Team Foundation ServerTeam Foundation Server
Team Foundation Server
 

Docker實務