SlideShare a Scribd company logo
1 of 26
Docker Build
碼頭工人建造篇 - Miles 2016/4/11
Outline
● Docker Basic Concept
● Docker Image Concept
● Let’s Build!
Docker Basic Concept
Docker Basic Concept
Docker 是 Clinet-Server 架構的應用程式,裡面有兩種角色
● Docker Clinet - 也就是平時下指令的 CLI
● Docker Server - 背景執行的 Docker 伺服器,也稱 Docker Engine
Docker Basic Concept
Docker Engine 有三個主要元件
● Image - 無法執行的唯讀模板。 Image 可以用來建立 Container
● Container - 實際可執行應用的元件,每個 Container 相互隔離
● Repository - 放 Image 的場所,包括本地和遠端
Docker Image Concept
● 採用 Union 檔案系統
● 由 initial commit 開始,一層一層堆疊檔案系統
● 每一層的 commit 都視同是 Image
● 使用 docker run 可由 Image 產生 Container
● 使用 docker commit 可由 Container 產生 Image
● 使用 docker build 可由 Dockerfile 產生 Image
Docker Image Concept
Docker Image Concept
Initial Commit
Docker Image Concept
Initial Commit
Installing Debian Jessie
Docker Image Concept
Initial Commit
Debian Jessie
Docker Image Concept
Initial Commit
Debian Jessie
Installing PHP 7
Docker Image Concept
Initial Commit
Debian Jessie
PHP 7
Docker Image Concept
Initial Commit
Debian Jessie
PHP 7 Installing Node 5
Docker Image Concept
Initial Commit
Debian Jessie
PHP 7 Node 5
Docker Image Concept
Initial Commit
Debian Jessie
PHP 7 Node 5
Installing Wordpress
Docker Image Concept
Initial Commit
Debian Jessie
PHP 7 Node 5
Wordpress
Let’s Build!
Let’s Build!
1. 建議一開始要有個可以成功 Build 的 Dockerfile
2. 懶人可以利用一下 Makefile 和 Docker Compose
3. 撰寫 Dockerfile 三循環
a. 新增 Dockerfile 指令,包括安裝服務、修改服務設定、設定 Docker 參數等
b. 執行 Build ,並產生 Container 驗證是否正確
c. 優化 Dockerfile
Let’s Build! - Initial Dockerfile
FROM php:5.6-apache
MAINTAINER MilesChou <jangconan@gmail.com>
Let’s Build! - Initial Makefile
Makefile 範例
● make build
● make rebuild
Let’s Build! - Add Dockerfile command
常用 Dockerfile command:
● RUN - 實際執行指令,如安裝套件、修改設定等
● COPY/ADD - 複製 host 的檔案到 Container
● ENV - 設定環境參數供 Container 執行使用
● EXPOSE - 開放特定 port ,在 link 時會很好用
● VOLUME - 設定分享資料卷
Let’s Build! - Build and Validate
Build & Validate 常用指令
● docker build
● docker run
○ 常用參數: -d / -p / -v / --rm / --name / ...
● docker exec -it
● docker ps / docker rm -f
● docker images / docker rmi
可以優化的方向
● 減少每次 Build Image 的時間,除了調整流程外,也可參考 .dockerignore
● 減少 Image 空間,除了調整流程外,也可參考 Alpine Linux
● 加強 Image 的 SaaS 特性,可參考 The Twelve Factors
Let’s Build! - Optimize Dockerfile
Conclusion
● Dockerfile 清楚描述了環境建置過程和設定配置方法。有助於推 DevOps 。
● 寫 Dockerfile 比 Vagrantfile 快很多,協同工作也更為方便
● 有了 Registry 更能發揮功效,一開始也可以先用 Docker Hub
Suggestions or Questions
Reference
● 《Docker —— 從入門到實踐-》正體中文版
● Dockerfile reference
● Docker Hub
● Docker in Golang (裡面有提到 Docker Initial Commit)

More Related Content

What's hot

docker intro
docker introdocker intro
docker intro
koji lin
 

What's hot (20)

從軟體開發角度
談 Docker 的應用
從軟體開發角度
談 Docker 的應用從軟體開發角度
談 Docker 的應用
從軟體開發角度
談 Docker 的應用
 
認識那條鯨魚 Docker 初探
認識那條鯨魚   Docker 初探認識那條鯨魚   Docker 初探
認識那條鯨魚 Docker 初探
 
容器式基礎架構介紹
容器式基礎架構介紹容器式基礎架構介紹
容器式基礎架構介紹
 
開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018
開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018
開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018
 
前端工程師一定要知道的 Docker 虛擬化容器技巧
前端工程師一定要知道的 Docker 虛擬化容器技巧前端工程師一定要知道的 Docker 虛擬化容器技巧
前端工程師一定要知道的 Docker 虛擬化容器技巧
 
Docker
DockerDocker
Docker
 
Docker tutorial
Docker tutorialDocker tutorial
Docker tutorial
 
開發人員不可不知的 Windows Container 容器技術預覽
開發人員不可不知的 Windows Container 容器技術預覽開發人員不可不知的 Windows Container 容器技術預覽
開發人員不可不知的 Windows Container 容器技術預覽
 
Docker 101
Docker 101Docker 101
Docker 101
 
Docker 最佳实践
Docker 最佳实践Docker 最佳实践
Docker 最佳实践
 
AWS EC2 for beginner
AWS EC2 for beginnerAWS EC2 for beginner
AWS EC2 for beginner
 
Software Engineer Talk
Software Engineer TalkSoftware Engineer Talk
Software Engineer Talk
 
Docker 基礎介紹與實戰
Docker 基礎介紹與實戰Docker 基礎介紹與實戰
Docker 基礎介紹與實戰
 
docker intro
docker introdocker intro
docker intro
 
容器式軟體開發介紹
容器式軟體開發介紹容器式軟體開發介紹
容器式軟體開發介紹
 
快速上手 Windows Containers 容器技術 (Docker Taipei)
快速上手 Windows Containers 容器技術 (Docker Taipei)快速上手 Windows Containers 容器技術 (Docker Taipei)
快速上手 Windows Containers 容器技術 (Docker Taipei)
 
Deployment with Capistrano
Deployment with CapistranoDeployment with Capistrano
Deployment with Capistrano
 
Docker workshop
Docker workshopDocker workshop
Docker workshop
 
Docker open stack
Docker open stackDocker open stack
Docker open stack
 
Docker - 30秒生出100台伺服器
Docker - 30秒生出100台伺服器Docker - 30秒生出100台伺服器
Docker - 30秒生出100台伺服器
 

Similar to Docker Build

Similar to Docker Build (20)

Docker基礎
Docker基礎Docker基礎
Docker基礎
 
Docker容器微服務 x WorkShop
Docker容器微服務 x WorkShopDocker容器微服務 x WorkShop
Docker容器微服務 x WorkShop
 
Docker基礎
Docker基礎Docker基礎
Docker基礎
 
桃園市教育局Docker技術入門與實作
桃園市教育局Docker技術入門與實作桃園市教育局Docker技術入門與實作
桃園市教育局Docker技術入門與實作
 
Docker一期培训
Docker一期培训Docker一期培训
Docker一期培训
 
Docker
DockerDocker
Docker
 
Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲
Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲
Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲
 
From docker hub to bluemix catalog
From docker hub to bluemix catalogFrom docker hub to bluemix catalog
From docker hub to bluemix catalog
 
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
 
Docker實務
Docker實務Docker實務
Docker實務
 
Linking error
Linking errorLinking error
Linking error
 
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)
 
美团点评技术沙龙14美团云-Docker平台
美团点评技术沙龙14美团云-Docker平台美团点评技术沙龙14美团云-Docker平台
美团点评技术沙龙14美团云-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 容器
 
Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to Docker
 
DAE 新变化介绍
DAE 新变化介绍DAE 新变化介绍
DAE 新变化介绍
 
Docker進階探討
Docker進階探討Docker進階探討
Docker進階探討
 
Docker 123
Docker 123Docker 123
Docker 123
 
Docker In-Depth
Docker In-DepthDocker In-Depth
Docker In-Depth
 
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 Build