SlideShare uma empresa Scribd logo
1 de 39
Baixar para ler offline
新手入門	
  
Yiling	
  Lai	
  	
  2015/06/04	
  
指令練習	
  
h1ps://goo.gl/F6L5iy	
  
(h1ps://github.com/azole/docker-­‐demo)	
  
Development	
   Test	
   ProducJon	
  
Development	
   Test	
   ProducJon	
  
Container	
  
•  Container	
  技術則是直接將⼀一個應⽤用程式所
需的相關程式碼、函式庫、環境配置檔都
打包起來建⽴立沙箱執⾏行環境。 	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  -­‐	
  10個Q&A快速認識Docker	
  
貨櫃的故事	
  
h1p://mrjamie.cc/2011/09/21/shipping-­‐container/	
  
Image	
  and	
  Container
•  Image:	
  可用來重複建立自己需要的
container	
  
•  Container:	
  一個獨立的運行空間	
  	
  
docker run -it node:0.10.38 /bin/bash
Image	
   Container
RUN
Demo1,	
  Demo2	
  
啟動	
  node	
  的執行環境	
  
docker run -it node:0.10.38 /bin/bash
à 建立一個 container,內建有 node
0.10.38 的執行環境
-­‐t	
  選項讓Docker分配⼀一個虛擬終端(pseudo-­‐1y)並綁定到容器的標準輸⼊入上	
  
-­‐i	
  則讓容器的標準輸⼊入保持打開	
  
Image	
  
Container
Image	
  
PULL
RUN
Registry
Local
Image	
   Container
RUN
Container
RUN
Demo3	
  
Image	
  
Container
Image	
  
PULL
Container’
RUN
CHANGE
Image	
  
Commit
Registry
Local
Container (writable)
Base	
  Image:	
  CentOS
Read-­‐Write	
  	
  
Layer
Read-­‐Only	
  	
  
Image
1.1	
  執行	
  (run)	
  CentOS	
  image	
  à	
  container	
  
Base	
  Image:	
  CentOS
Container: yum update
Read-­‐Write	
  	
  
Layer
Read-­‐Only	
  	
  
Image
1.1	
  執行	
  (run)	
  CentOS	
  image	
  à	
  container	
  
1.2	
  進行更新	
  yum	
  update	
  
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
Base	
  Image:	
  CentOS
Image	
  A:	
  Updated
Read-­‐Write	
  	
  
Layer
Read-­‐Only	
  	
  
Image
2.1	
  執行	
  (run)	
  image	
  A	
  à	
  container	
  
	
  	
  	
  	
  	
  	
  	
  à	
  會連	
  Base	
  Image	
  都載入	
  
Container
參考
parent	
  
Image
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
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
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
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
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
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
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
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
基本概念
•  Image:	
  一個唯讀的模板,可用來建立
container。	
  
•  Container:	
  從	
  image	
  建立的執行實例,可以
被啟動、停止、刪除等,每個	
  container	
  之
間都是隔離的。	
  
•  Repository:	
  類似 git,裡頭有許多	
  image	
  可
供使用。	
  
– 公開的:Docker	
  Hub	
  	
  (類似 github)	
  
– 私有:可以透過	
  docker-­‐registry	
  建立	
  	
  
Image	
  
Container
Image	
  
PULL
Container’
RUN
CHANGE
Image	
  
Commit
PUSH
Registry
Local
Image	
  
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	
  
Container
Websrv
Docker0 Bridge
(172.17.42.1)
docker	
  run	
  -­‐-­‐name	
  websrv	
  -­‐d	
  –p	
  8080:80	
  azole/nginx	
  
eth0
eth0
Host
port	
  80
port	
  8080
Demo5	
  
Container
Websrv
Docker0 Bridge
(172.17.42.1)
docker	
  run	
  -­‐-­‐name	
  websrv	
  -­‐d	
  -­‐p	
  8080:80	
  	
  -­‐-­‐privileged=true	
  	
  
	
  	
  	
  	
  -­‐v	
  /home/azole/websrv:/var/www/html	
  azole/nginx
eth0
eth0
Host
port	
  80
port	
  49161
Local	
  FS
webapp1
webapp2
webapp3
 path/www
Demo6	
  
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	
  
boot2docker	
  
•  For	
  mac	
  and	
  windows	
  
docker client
Boot2docker VM (VirtualBox VM)
	
  
	
  
	
  
	
  
Docker	
  Daemon	
  
Container Container Container
mac	
  /	
  windows
•  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	
  
 
	
  
	
  
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
極小化	
  redis	
  image	
  
•  請參考:追求極簡化	
  Docker	
  image	
  之路	
  -­‐	
  
William	
  Yeh	
  
參考資料	
  
•  10個Q&A快速認識Docker	
  
•  《Docker	
  ——	
  從⼊入⾨門到實踐-­‐》正體中⽂文版	
  
•  h1ps://github.com/William-­‐Yeh/docker-­‐
workshop	
  
•  追求極簡化	
  Docker	
  image	
  之路	
  -­‐	
  William	
  Yeh	
  
指令練習	
  
•  h1ps://github.com/azole/docker-­‐demo/	
  

Mais conteúdo relacionado

Mais procurados

docker intro
docker introdocker intro
docker intro
koji lin
 

Mais procurados (20)

Docker Build
Docker BuildDocker Build
Docker Build
 
Docker 基礎介紹與實戰
Docker 基礎介紹與實戰Docker 基礎介紹與實戰
Docker 基礎介紹與實戰
 
Software Engineer Talk
Software Engineer TalkSoftware Engineer Talk
Software Engineer Talk
 
Introduction to Golang final
Introduction to Golang final Introduction to Golang final
Introduction to Golang final
 
docker intro
docker introdocker intro
docker intro
 
Continuous Delivery with Ansible x GitLab CI
Continuous Delivery with Ansible x GitLab CIContinuous Delivery with Ansible x GitLab CI
Continuous Delivery with Ansible x GitLab CI
 
Docker 101
Docker 101Docker 101
Docker 101
 
Docker
DockerDocker
Docker
 
Docker home ted
Docker home tedDocker home ted
Docker home ted
 
Deployment with Capistrano
Deployment with CapistranoDeployment with Capistrano
Deployment with Capistrano
 
cec-hello-docker
cec-hello-dockercec-hello-docker
cec-hello-docker
 
開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018
開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018
開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018
 
Docker一期培训
Docker一期培训Docker一期培训
Docker一期培训
 
開發人員不可不知的 Windows Container 容器技術預覽
開發人員不可不知的 Windows Container 容器技術預覽開發人員不可不知的 Windows Container 容器技術預覽
開發人員不可不知的 Windows Container 容器技術預覽
 
容器式基礎架構介紹
容器式基礎架構介紹容器式基礎架構介紹
容器式基礎架構介紹
 
Continuous Delivery Workshop with Ansible x GitLab CI
Continuous Delivery Workshop with Ansible x GitLab CIContinuous Delivery Workshop with Ansible x GitLab CI
Continuous Delivery Workshop with Ansible x GitLab CI
 
Docker初识
Docker初识Docker初识
Docker初识
 
Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to Docker
 
Rancher: 建立你的牧場艦隊
Rancher: 建立你的牧場艦隊Rancher: 建立你的牧場艦隊
Rancher: 建立你的牧場艦隊
 
微软Bot framework简介
微软Bot framework简介微软Bot framework简介
微软Bot framework简介
 

Semelhante a 20150604 docker 新手入門

Clojure cnclojure-meetup
Clojure cnclojure-meetupClojure cnclojure-meetup
Clojure cnclojure-meetup
sunng87
 

Semelhante a 20150604 docker 新手入門 (20)

Docker基礎
Docker基礎Docker基礎
Docker基礎
 
Docker open stack
Docker open stackDocker open stack
Docker open stack
 
Docker 最佳实践
Docker 最佳实践Docker 最佳实践
Docker 最佳实践
 
Docker容器微服務 x WorkShop
Docker容器微服務 x WorkShopDocker容器微服務 x WorkShop
Docker容器微服務 x WorkShop
 
快速上手 Windows Containers 容器技術 (Docker Taipei)
快速上手 Windows Containers 容器技術 (Docker Taipei)快速上手 Windows Containers 容器技術 (Docker Taipei)
快速上手 Windows Containers 容器技術 (Docker Taipei)
 
DAE 新变化介绍
DAE 新变化介绍DAE 新变化介绍
DAE 新变化介绍
 
容器與 Gitlab CI 應用
容器與 Gitlab CI 應用容器與 Gitlab CI 應用
容器與 Gitlab CI 應用
 
認識 Docker
認識 Docker認識 Docker
認識 Docker
 
Docker進階探討
Docker進階探討Docker進階探討
Docker進階探討
 
Hadoop开发者入门专刊
Hadoop开发者入门专刊Hadoop开发者入门专刊
Hadoop开发者入门专刊
 
Windows 與 Azure 的容器旅程 @ Ignite Mini 2016
Windows 與 Azure 的容器旅程 @ Ignite Mini 2016Windows 與 Azure 的容器旅程 @ Ignite Mini 2016
Windows 與 Azure 的容器旅程 @ Ignite Mini 2016
 
Docker
DockerDocker
Docker
 
Docker 123
Docker 123Docker 123
Docker 123
 
桃園市教育局Docker技術入門與實作
桃園市教育局Docker技術入門與實作桃園市教育局Docker技術入門與實作
桃園市教育局Docker技術入門與實作
 
Docker In-Depth
Docker In-DepthDocker In-Depth
Docker In-Depth
 
DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代
DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代
DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代
 
Clojure cnclojure-meetup
Clojure cnclojure-meetupClojure cnclojure-meetup
Clojure cnclojure-meetup
 
Docker實務
Docker實務Docker實務
Docker實務
 
用 Drone 打造 輕量級容器持續交付平台
用 Drone 打造輕量級容器持續交付平台用 Drone 打造輕量級容器持續交付平台
用 Drone 打造 輕量級容器持續交付平台
 
Cloudstack dev/user sharing
Cloudstack dev/user sharingCloudstack dev/user sharing
Cloudstack dev/user sharing
 

Mais de azole Lai (6)

作業系統基本觀念複習
作業系統基本觀念複習作業系統基本觀念複習
作業系統基本觀念複習
 
singularly continuous
singularly continuoussingularly continuous
singularly continuous
 
利用Javascript 與 html5開發線上遊戲_1骰子遊戲
利用Javascript 與 html5開發線上遊戲_1骰子遊戲利用Javascript 與 html5開發線上遊戲_1骰子遊戲
利用Javascript 與 html5開發線上遊戲_1骰子遊戲
 
利用Javascript 與 html5開發線上遊戲_0基本概念
利用Javascript 與 html5開發線上遊戲_0基本概念利用Javascript 與 html5開發線上遊戲_0基本概念
利用Javascript 與 html5開發線上遊戲_0基本概念
 
利用Javascript 與 html5開發線上遊戲_2彈力球
利用Javascript 與 html5開發線上遊戲_2彈力球利用Javascript 與 html5開發線上遊戲_2彈力球
利用Javascript 與 html5開發線上遊戲_2彈力球
 
20130908 Change the world?
20130908 Change the world?20130908 Change the world?
20130908 Change the world?
 

20150604 docker 新手入門

  • 1. 新手入門   Yiling  Lai    2015/06/04  
  • 3. Development   Test   ProducJon  
  • 4. Development   Test   ProducJon  
  • 5. Container   •  Container  技術則是直接將⼀一個應⽤用程式所 需的相關程式碼、函式庫、環境配置檔都 打包起來建⽴立沙箱執⾏行環境。                                                                                                                            -­‐  10個Q&A快速認識Docker  
  • 7.
  • 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  則讓容器的標準輸⼊入保持打開  
  • 10.
  • 14. Container (writable) Base  Image:  CentOS Read-­‐Write     Layer Read-­‐Only     Image 1.1  執行  (run)  CentOS  image  à  container  
  • 15. Base  Image:  CentOS Container: yum update Read-­‐Write     Layer Read-­‐Only     Image 1.1  執行  (run)  CentOS  image  à  container   1.2  進行更新  yum  update  
  • 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  建立    
  • 27. Image   Container Image   PULL Container’ RUN CHANGE Image   Commit PUSH Registry Local Image  
  • 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  
  • 29.
  • 30. Container Websrv Docker0 Bridge (172.17.42.1) docker  run  -­‐-­‐name  websrv  -­‐d  –p  8080:80  azole/nginx   eth0 eth0 Host port  80 port  8080 Demo5  
  • 31. Container Websrv Docker0 Bridge (172.17.42.1) docker  run  -­‐-­‐name  websrv  -­‐d  -­‐p  8080:80    -­‐-­‐privileged=true            -­‐v  /home/azole/websrv:/var/www/html  azole/nginx eth0 eth0 Host port  80 port  49161 Local  FS webapp1 webapp2 webapp3 path/www Demo6  
  • 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
  • 36.
  • 37. 極小化  redis  image   •  請參考:追求極簡化  Docker  image  之路  -­‐   William  Yeh  
  • 38. 參考資料   •  10個Q&A快速認識Docker   •  《Docker  ——  從⼊入⾨門到實踐-­‐》正體中⽂文版   •  h1ps://github.com/William-­‐Yeh/docker-­‐ workshop   •  追求極簡化  Docker  image  之路  -­‐  William  Yeh  

Notas do Editor

  1. 開發環境 每個新進同仁、每台新電腦的工作環境? 不同的專案相依的環境不同(環境、相依函式庫、套件等版本)。 測試環境 通常測試機不會有太多台… 不同團隊之間的溝通成本… 平行測試? 正式環境 建置 與測試環境的差異,不一樣的話測試等於白測… 擴充
  2. 開發環境 每個新進同仁、每台新電腦的工作環境? 不同的專案相依的環境不同(環境、相依函式庫、套件等版本)。 測試環境 通常測試機不會有太多台… 不同團隊之間的溝通成本… 平行測試? 正式環境 建置 與測試環境的差異,不一樣的話測試等於白測… 平行擴充
  3. Demo1, Demo2
  4. Demo3
  5. OS 基礎映象檔的用途是讓 Container 擁有這 OS 的檔案系統,例如使用 ubuntu 基礎映象檔就可以讓 Container 建立 ubuntu 的根目錄架構,而不是用來執行一個 OS 執行實例。
  6. OS 基礎映象檔的用途是讓 Container 擁有這 OS 的檔案系統,例如使用 ubuntu 基礎映象檔就可以讓 Container 建立 ubuntu 的根目錄架構,而不是用來執行一個 OS 執行實例。
  7. OS 基礎映象檔的用途是讓 Container 擁有這 OS 的檔案系統,例如使用 ubuntu 基礎映象檔就可以讓 Container 建立 ubuntu 的根目錄架構,而不是用來執行一個 OS 執行實例。
  8. OS 基礎映象檔的用途是讓 Container 擁有這 OS 的檔案系統,例如使用 ubuntu 基礎映象檔就可以讓 Container 建立 ubuntu 的根目錄架構,而不是用來執行一個 OS 執行實例。
  9. OS 基礎映象檔的用途是讓 Container 擁有這 OS 的檔案系統,例如使用 ubuntu 基礎映象檔就可以讓 Container 建立 ubuntu 的根目錄架構,而不是用來執行一個 OS 執行實例。
  10. OS 基礎映象檔的用途是讓 Container 擁有這 OS 的檔案系統,例如使用 ubuntu 基礎映象檔就可以讓 Container 建立 ubuntu 的根目錄架構,而不是用來執行一個 OS 執行實例。
  11. OS 基礎映象檔的用途是讓 Container 擁有這 OS 的檔案系統,例如使用 ubuntu 基礎映象檔就可以讓 Container 建立 ubuntu 的根目錄架構,而不是用來執行一個 OS 執行實例。
  12. OS 基礎映象檔的用途是讓 Container 擁有這 OS 的檔案系統,例如使用 ubuntu 基礎映象檔就可以讓 Container 建立 ubuntu 的根目錄架構,而不是用來執行一個 OS 執行實例。
  13. OS 基礎映象檔的用途是讓 Container 擁有這 OS 的檔案系統,例如使用 ubuntu 基礎映象檔就可以讓 Container 建立 ubuntu 的根目錄架構,而不是用來執行一個 OS 執行實例。
  14. OS 基礎映象檔的用途是讓 Container 擁有這 OS 的檔案系統,例如使用 ubuntu 基礎映象檔就可以讓 Container 建立 ubuntu 的根目錄架構,而不是用來執行一個 OS 執行實例。
  15. OS 基礎映象檔的用途是讓 Container 擁有這 OS 的檔案系統,例如使用 ubuntu 基礎映象檔就可以讓 Container 建立 ubuntu 的根目錄架構,而不是用來執行一個 OS 執行實例。
  16. OS 基礎映象檔的用途是讓 Container 擁有這 OS 的檔案系統,例如使用 ubuntu 基礎映象檔就可以讓 Container 建立 ubuntu 的根目錄架構,而不是用來執行一個 OS 執行實例。
  17. 私有倉庫這邊,還能透過設定將 images 儲存到 S3 上去。
  18. Demo4
  19. 在預設的情況下,container可以主動存去外部網路的連接,但外部網路無法存取倒容器內。 Demo5
  20. Demo6
  21. Demo7
  22. The application includes a VirtualBox Virtual Machine (VM), Docker itself, and the Boot2Docker management tool.
  23. 192.168.59.103
  24. 傳統 VM 是在OS外來建立虛擬環境,透過Hypervisor在Host中模擬一套完整的硬體環境資源,目標是建立一個可以用來執行整套作業系統的沙箱獨立執行環境,所以VM做出來的是一個一個可以獨立安裝 OS 的「盒子」。 而 Container 是在OS內的核心系統層來打造虛擬執行環境,透過共用Host OS的作法,取代一個一個Guest OS的功用。 Container也因此被稱為是OS層的虛擬化技術。 Container 很輕、很快,啟動速度是秒級,可以大量節約開發、測試與部署的時間。 Docker 抛弃传统VM试图模拟完整机器的思路,而是以应用为单元进行"集装封箱"