[Docker 學習筆記] Run/Compose/Swarm Mode 幾個運行方式基本概念

這裡不打算談什麼是 Docker, 如何打包 Image 之類
網路上已經太多太多相關教學了
所以第一篇就直接說幾個 Docker 的運行方式的基本概念吧
晚點再寫幾個命令的懶人包 (給自己 Copy XD)

docker build, run 與 Dockerfile

Dockerfile 用於 Build 自己的 Image
或者應該說, 基於別人的 Image 修改時也需要使用

# 以當前目錄的 Dockerfile Build Image “myapp”
docker build -t myapp .

# 運行 Image
docker 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 執行一個/多個 Container
docker-compose up

# 以當前目錄的 docker-compose.yml Build 裡面所有 Images
docker-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 上運行 myapp
docker service create myapp
# 在 Swarm 上運行 containous/whoami 並對外開放 80 Port
docker service create -p 80:80 containous/whoami

docker stack 好比 docker-compose
是把多個 Service 以 docker-compose.yml 綁起來一起運行的方法
# 在 Swarm 上以 docker-compose.yml 運行 myapp-stack
docker stack deploy myapp-stack --compose-file docker-compose.yml

這裡的 docker-compose.yml 跟 docker-compose.yml 格式是通用的
但也有 Swarm Mode 和 Docker Compose 專用的選項, 這之後再說了

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.