LEN

Docker Compose 简介
Docker Compose 簡介一開始我們先了解 Docker Compose 是一個工具可以讓你可以透過一個指...
扫描右侧二维码阅读全文
20
2019/10

Docker Compose 简介

Docker Compose 簡介

一開始我們先了解 Docker Compose 是一個工具可以讓你可以透過一個指令就可以控制所有專案(project)中所需要的 services。Docker Compose 是用 YAML 檔案格式來描述和定義 project 中 services 運作關係,白話來說就是用來管理 Container 的文件檔。

yml.png

什麼意思呢?

試想一下,我們在開發一個典型的 Web project 時通常不是只有一個 service,有可能需要 app server、database、cache,甚至是 reverse proxy 等 service 才能構成一個可以上線運行的專案,這些 service 往往會需要多個 container 來運行。此時若是使用 Docker CLI 需要手動輸入多少行才能正式啟動一個 project?這時候就是 Docker Compose 發揮功能的時候啦!

我們先來看看,一個基本的 docker-compose.yml 檔案長這樣(YAML 檔案格式,使用空格來縮排,附檔名為 .yml):

version: '3' # 目前使用的版本,可以參考官網:
services: # services 關鍵字後面列出 web, redis 兩項專案中的服務
  web:
    build: . # Build 在同一資料夾的 Dockerfile(描述 Image 要組成的 yaml 檔案)成 container
    ports:
      - "5000:5000" # 外部露出開放的 port 對應到 docker container 的 port
    volumes:
      - .:/code # 要從本地資料夾 mount 掛載進去的資料
    links:
      - redis # 連結到 redis,讓兩個 container 可以互通網路
  redis:
    image: redis # 從 redis image build 出 container

Dockerfile 和 Docker Compose 的差異是?

在了解到 Docker Compose 主要是用來描述 Service 之間的相依性和調度方式後,我們來看看同樣初學者會比較容易搞混的觀念:Dockerfile。事實上 Dockerfile 是用來描述映像檔(image)的文件。

所謂的 Image,就是生產 Container 的模版,你可以從 Docker Hub 官方下載或是根據官方的 Image 自己加工後打包成 Image 或是完全自己使用 Dockerfile 描述 Image 內容來製作 Image。而 Container 則是透過 Image 產生隔離的執行環境,稱之為 Container,也就是我們一般用來提供 microservice 的最小單位。

# 這是一個創建 ubuntu 並安裝 nginx 的 image
FROM ubuntu:16.04 # 從 Docker hub 下載基礎的 image,可能是作業系統環境或是程式語言環境,這邊是 ubuntu 16.04
MAINTAINER demo@gmail.com # 維護者

RUN apt-get update # 執行 CMD 指令跑的指令,更新 apt 套件包資訊
RUN apt-get install –y nginx # 執行 CMD 指令跑的指令,安裝 nginx
CMD ["echo", "Nginx Image created"]

以上為簡單的 Dockerfile。我們可以看到,只需一個文字檔,就清楚描述一個 Docker image。利於使用版本控制,也可以減少 shell script 的工作量。

原文地址: https://blog.techbridge.cc/2018/09/07/docker-compose-tutorial-intro/

最后修改:2019 年 10 月 20 日 02 : 17 AM
如果觉得我的文章对你有用,请随意赞赏

发表评论