Mais conteúdo relacionado
Semelhante a 20150604 docker 新手入門 (20)
20150604 docker 新手入門
- 8. Image
and
Container
• Image:
可用來重複建立自己需要的
container
• Container:
一個獨立的運行空間
docker run -it node:0.10.38 /bin/bash
Image
Container
RUN
Demo1,
Demo2
- 9. 啟動
node
的執行環境
docker run -it node:0.10.38 /bin/bash
à 建立一個 container,內建有 node
0.10.38 的執行環境
-‐t
選項讓Docker分配⼀一個虛擬終端(pseudo-‐1y)並綁定到容器的標準輸⼊入上
-‐i
則讓容器的標準輸⼊入保持打開
- 16. Base
Image:
CentOS
Image
A:
Updated
Read-‐Write
Layer
Read-‐Only
Image
1.1
執行
(run)
CentOS
image
à
container
1.2
進行更新
yum
update
1.3
存成(commit)
image
à
只會存
diff
à
現在有
2
個不同的
images
à
Base
Image
為
Image
A
的
Parent
參考
parent
Image
- 17. Base
Image:
CentOS
Image
A:
Updated
Read-‐Write
Layer
Read-‐Only
Image
2.1
執行
(run)
image
A
à
container
à
會連
Base
Image
都載入
Container
參考
parent
Image
- 18. Base
Image:
CentOS
Image
A:
Updated
Read-‐Write
Layer
Read-‐Only
Image
2.1
執行
(run)
image
A
à
container
2.2
安裝
apache
Install Apache
參考
parent
Image
- 19. Base
Image:
CentOS
Image
A:
Updated
Read-‐Write
Layer
Read-‐Only
Image
2.1
執行
(run)
image
A
à
container
2.2
安裝
apache
2.3
存成(commit)
image
B
à
只存
diff
à
A
為
B
的 Parent
Image
Image
B:
Apache
參考
parent
Image
參考
parent
Image
- 20. Base
Image:
CentOS
Image
A:
Updated
Read-‐Write
Layer
Read-‐Only
Image
3.1
執行
(run)
image
B
à
container
à
載入
Base
Image
&
Image
A
Image
B:
Apache
Container
參考
parent
Image
參考
parent
Image
- 21. Base
Image:
CentOS
Image
A:
Updated
Read-‐Write
Layer
Read-‐Only
Image
3.1
執行
(run)
image
B
à
container
3.2
安裝
PHP
5.3
Image
B:
Apache
PHP 5.3
參考
parent
Image
參考
parent
Image
- 22. Base
Image:
CentOS
Image
A:
Updated
Read-‐Write
Layer
Read-‐Only
Image
3.1
執行 (run)
image
B
à
container
3.2
安裝
PHP
5.3
4.1
執行 (run)
image
B
à
container
Image
B:
Apache
PHP 5.3
Container
參考
parent
Image
參考
parent
Image
- 23. Base
Image:
CentOS
Image
A:
Updated
Read-‐Write
Layer
Read-‐Only
Image
3.1
執行 (run)
image
B
à
container
3.2
安裝
PHP
5.3
4.1
執行 (run)
image
B
à
container
4.2
安裝
PHP
5.4
Image
B:
Apache
PHP 5.3
PHP 5.4
參考
parent
Image
參考
parent
Image
- 24. Base
Image:
CentOS
Image
A:
Updated
Read-‐Write
Layer
Read-‐Only
Image
5.1
執行 (run)
image
A
à
container
Image
B:
Apache
PHP 5.3
PHP 5.4
Container
參考
parent
Image
參考
parent
Image
- 25. Base
Image:
CentOS
Image
A:
Updated
Read-‐Write
Layer
Read-‐Only
Image
5.1
執行 (run)
image
A
à
container
5.2
安裝
Nginx
Image
B:
Apache
PHP 5.3
PHP 5.4
Nginx
- 26. 基本概念
• Image:
一個唯讀的模板,可用來建立
container。
• Container:
從
image
建立的執行實例,可以
被啟動、停止、刪除等,每個
container
之
間都是隔離的。
• Repository:
類似 git,裡頭有許多
image
可
供使用。
– 公開的:Docker
Hub
(類似 github)
– 私有:可以透過
docker-‐registry
建立
- 28. Dockerfile
• 只是一個文字檔:
文件、版控、易於傳遞
docker build -t azole/nginx .
# This is a nginx server
FROM debian
MAINTAINER azole <azole@pchome.com.tw>
RUN apt-get -qq update
RUN apt-get -y install nginx
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
Image
Dockerfile
BUILD
Demo4
- 32. Container
Websrv
Docker0 Bridge
(172.17.42.1)
docker
run
-‐-‐name
webdb
-‐d
redis
docker
run
-‐-‐name
websrv
-‐d
-‐P
-‐-‐link
webdb:mysql
-‐v
/home/azole/webapp2:/var/www/html
-‐-‐privileged
=true
azole/nginx
eth0
eth0
Host
port
80
port
49161
Link
Local
FS
webapp1
webapp2
webapp3
path/www
Container
webdb
Demo7
- 33. boot2docker
• For
mac
and
windows
docker client
Boot2docker VM (VirtualBox VM)
Docker
Daemon
Container Container Container
mac
/
windows
- 34. • boot2docker
init
• boot2docker
start
• boot2docker
shellinit
• boot2docker
ip
To
connect
the
Docker
client
to
the
Docker
daemon,
please
set:
export
DOCKER_HOST=tcp://192.168.59.103:2376
export
DOCKER_CERT_PATH=/Users/mtk10862/.boot2docker/certs/boot2docker-‐vm
export
DOCKER_TLS_VERIFY=1
- 35.
Docker
Daemon
Container Container Container
linux
eth0
docker client
Boot2docker VM (192.168.59.103)
Docker
Daemon
Container Container Container
mac
/
windows
eth0
http://192.168.59.103:49154
docker client
http://localhost:49154
- 38. 參考資料
• 10個Q&A快速認識Docker
• 《Docker
——
從⼊入⾨門到實踐-‐》正體中⽂文版
• h1ps://github.com/William-‐Yeh/docker-‐
workshop
• 追求極簡化
Docker
image
之路
-‐
William
Yeh
Notas do Editor
- 開發環境
每個新進同仁、每台新電腦的工作環境?
不同的專案相依的環境不同(環境、相依函式庫、套件等版本)。
測試環境
通常測試機不會有太多台…
不同團隊之間的溝通成本…
平行測試?
正式環境
建置
與測試環境的差異,不一樣的話測試等於白測…
擴充
- 開發環境
每個新進同仁、每台新電腦的工作環境?
不同的專案相依的環境不同(環境、相依函式庫、套件等版本)。
測試環境
通常測試機不會有太多台…
不同團隊之間的溝通成本…
平行測試?
正式環境
建置
與測試環境的差異,不一樣的話測試等於白測…
平行擴充
- Demo1, Demo2
- Demo3
- OS 基礎映象檔的用途是讓 Container 擁有這 OS 的檔案系統,例如使用 ubuntu 基礎映象檔就可以讓 Container 建立 ubuntu 的根目錄架構,而不是用來執行一個 OS 執行實例。
- OS 基礎映象檔的用途是讓 Container 擁有這 OS 的檔案系統,例如使用 ubuntu 基礎映象檔就可以讓 Container 建立 ubuntu 的根目錄架構,而不是用來執行一個 OS 執行實例。
- OS 基礎映象檔的用途是讓 Container 擁有這 OS 的檔案系統,例如使用 ubuntu 基礎映象檔就可以讓 Container 建立 ubuntu 的根目錄架構,而不是用來執行一個 OS 執行實例。
- OS 基礎映象檔的用途是讓 Container 擁有這 OS 的檔案系統,例如使用 ubuntu 基礎映象檔就可以讓 Container 建立 ubuntu 的根目錄架構,而不是用來執行一個 OS 執行實例。
- OS 基礎映象檔的用途是讓 Container 擁有這 OS 的檔案系統,例如使用 ubuntu 基礎映象檔就可以讓 Container 建立 ubuntu 的根目錄架構,而不是用來執行一個 OS 執行實例。
- OS 基礎映象檔的用途是讓 Container 擁有這 OS 的檔案系統,例如使用 ubuntu 基礎映象檔就可以讓 Container 建立 ubuntu 的根目錄架構,而不是用來執行一個 OS 執行實例。
- OS 基礎映象檔的用途是讓 Container 擁有這 OS 的檔案系統,例如使用 ubuntu 基礎映象檔就可以讓 Container 建立 ubuntu 的根目錄架構,而不是用來執行一個 OS 執行實例。
- OS 基礎映象檔的用途是讓 Container 擁有這 OS 的檔案系統,例如使用 ubuntu 基礎映象檔就可以讓 Container 建立 ubuntu 的根目錄架構,而不是用來執行一個 OS 執行實例。
- OS 基礎映象檔的用途是讓 Container 擁有這 OS 的檔案系統,例如使用 ubuntu 基礎映象檔就可以讓 Container 建立 ubuntu 的根目錄架構,而不是用來執行一個 OS 執行實例。
- OS 基礎映象檔的用途是讓 Container 擁有這 OS 的檔案系統,例如使用 ubuntu 基礎映象檔就可以讓 Container 建立 ubuntu 的根目錄架構,而不是用來執行一個 OS 執行實例。
- OS 基礎映象檔的用途是讓 Container 擁有這 OS 的檔案系統,例如使用 ubuntu 基礎映象檔就可以讓 Container 建立 ubuntu 的根目錄架構,而不是用來執行一個 OS 執行實例。
- OS 基礎映象檔的用途是讓 Container 擁有這 OS 的檔案系統,例如使用 ubuntu 基礎映象檔就可以讓 Container 建立 ubuntu 的根目錄架構,而不是用來執行一個 OS 執行實例。
- 私有倉庫這邊,還能透過設定將 images 儲存到 S3 上去。
- Demo4
- 在預設的情況下,container可以主動存去外部網路的連接,但外部網路無法存取倒容器內。
Demo5
- Demo6
- Demo7
- The application includes a VirtualBox Virtual Machine (VM), Docker itself, and the Boot2Docker management tool.
- 192.168.59.103
- 傳統 VM 是在OS外來建立虛擬環境,透過Hypervisor在Host中模擬一套完整的硬體環境資源,目標是建立一個可以用來執行整套作業系統的沙箱獨立執行環境,所以VM做出來的是一個一個可以獨立安裝 OS 的「盒子」。
而 Container 是在OS內的核心系統層來打造虛擬執行環境,透過共用Host OS的作法,取代一個一個Guest OS的功用。
Container也因此被稱為是OS層的虛擬化技術。
Container 很輕、很快,啟動速度是秒級,可以大量節約開發、測試與部署的時間。
Docker 抛弃传统VM试图模拟完整机器的思路,而是以应用为单元进行"集装封箱"