More Related Content
Similar to Docker Build (20)
Docker Build
- 4. Docker Basic Concept
Docker 是 Clinet-Server 架構的應用程式,裡面有兩種角色
● Docker Clinet - 也就是平時下指令的 CLI
● Docker Server - 背景執行的 Docker 伺服器,也稱 Docker Engine
- 5. Docker Basic Concept
Docker Engine 有三個主要元件
● Image - 無法執行的唯讀模板。 Image 可以用來建立 Container
● Container - 實際可執行應用的元件,每個 Container 相互隔離
● Repository - 放 Image 的場所,包括本地和遠端
- 7. ● 採用 Union 檔案系統
● 由 initial commit 開始,一層一層堆疊檔案系統
● 每一層的 commit 都視同是 Image
● 使用 docker run 可由 Image 產生 Container
● 使用 docker commit 可由 Container 產生 Image
● 使用 docker build 可由 Dockerfile 產生 Image
Docker Image Concept
- 18. Let’s Build!
1. 建議一開始要有個可以成功 Build 的 Dockerfile
2. 懶人可以利用一下 Makefile 和 Docker Compose
3. 撰寫 Dockerfile 三循環
a. 新增 Dockerfile 指令,包括安裝服務、修改服務設定、設定 Docker 參數等
b. 執行 Build ,並產生 Container 驗證是否正確
c. 優化 Dockerfile
- 19. Let’s Build! - Initial Dockerfile
FROM php:5.6-apache
MAINTAINER MilesChou <jangconan@gmail.com>
- 20. Let’s Build! - Initial Makefile
Makefile 範例
● make build
● make rebuild
- 21. Let’s Build! - Add Dockerfile command
常用 Dockerfile command:
● RUN - 實際執行指令,如安裝套件、修改設定等
● COPY/ADD - 複製 host 的檔案到 Container
● ENV - 設定環境參數供 Container 執行使用
● EXPOSE - 開放特定 port ,在 link 時會很好用
● VOLUME - 設定分享資料卷
- 22. 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
- 23. 可以優化的方向
● 減少每次 Build Image 的時間,除了調整流程外,也可參考 .dockerignore
● 減少 Image 空間,除了調整流程外,也可參考 Alpine Linux
● 加強 Image 的 SaaS 特性,可參考 The Twelve Factors
Let’s Build! - Optimize Dockerfile
- 26. Reference
● 《Docker —— 從入門到實踐-》正體中文版
● Dockerfile reference
● Docker Hub
● Docker in Golang (裡面有提到 Docker Initial Commit)