這裡不打算談什麼是 Docker, 如何打包 Image 之類
網路上已經太多太多相關教學了
所以第一篇就直接說幾個 Docker 的運行方式的基本概念吧
晚點再寫幾個命令的懶人包 (給自己 Copy XD)
docker build, run 與 Dockerfile
Dockerfile 用於 Build 自己的 Image
或者應該說, 基於別人的 Image 修改時也需要使用
# 以當前目錄的 Dockerfile Build Image “myapp”docker build -t myapp .
# 運行 Imagedocker run myapp
# 運行 containous/whoami Image 並對外開放 80 Port docker run -p 80:80 containous/whoami
docker-compose 與 docker-compose.yml
docker-compose 是一個基於 Python 的工具
主要用來把多個 Container 綁起來一起運行
還有節省長長的命令行參數
# 以當前目錄的 docker-compose.yml 執行一個/多個 Containerdocker-compose up
# 以當前目錄的 docker-compose.yml Build 裡面所有 Imagesdocker-compose build
Docker Swarm Mode, Service 及 Stack
重要: 這裡談的不是已經廢棄的產品 “Docker Swarm”!!
只差個 Mode 字差很多 網路上找到的教學都要確定是 Swarm Mode 再看
Docker Swarm Mode 是 Docker 內建的 Container Orchestration 功能
嗯… 這裡也不打算解釋了 簡單來說
它大概是能把一個 Image 同時運行幾個 Container (在一台/多台 Host 上)
然後自動管理 + 負載平衡的機制
docker service 好比 docker run
是直接把一個 Image 以 Swarm Mode 運行的方法
# 在 Swarm 上運行 myappdocker service create myapp
# 在 Swarm 上運行 containous/whoami 並對外開放 80 Portdocker service create -p 80:80 containous/whoami
docker stack 好比 docker-compose
是把多個 Service 以 docker-compose.yml 綁起來一起運行的方法
# 在 Swarm 上以 docker-compose.yml 運行 myapp-stackdocker stack deploy myapp-stack --compose-file docker-compose.yml
這裡的 docker-compose.yml 跟 docker-compose.yml 格式是通用的
但也有 Swarm Mode 和 Docker Compose 專用的選項, 這之後再說了