Build / Run A Image

Step 1 | 使用 Dockerfile 定義 Image

FROM baseImage
WORKDIR /the/workdir/path
COPY /source /dest
RUN command
CMD ["executable", "parameter"]
  • FROM:該 Image 相依的 Image。如果為 node:latest,則該 Image 中可以執行 node 指令。
  • WORKDIR:該 Image 中執行的指令都會在該路徑中。
  • COPY:自當前目錄位置複製檔案至該 Image 的 WORKDIR
    • 可以透過 -f flag 另外定義 /source 所在的位置。
  • RUN:bundle/build 該 Image 時執行的指令。
  • CMD:run/deploy 該 Image 後,在 Container 內執行的指令。

也可以定義 .dockerignore 過濾 COPY 執行時要略過的檔案/路徑/資料夾。

每一行定義/指令都會創建一層 layer

  • layer 為 stacked,且每層 layer 都是基於前一層的操作/修改。
  • 減少 layer 可以增加 build 效率。
  • 開始運行 Container 後,會在最上面加一層可以讀寫的 layer。
  • 會建立 layer 的指令:RUNCOPYADD

Step 2 | Build Image

docker build --tag [IMAGE_TAG] [DOCKERFILE_PATH]
  • --tag name:tag:該 Image 的名稱/標籤。
    • Format name:tag

Step 3 | Run Container

docker --publish [HOST_PORT]:[CONTAINER_PORT] --detach --name [CONTAINER_NAME] [IMAGE_TAG]
  • --publish hostPort:containerPort:讓 container 中的指定 port 接到 host 上的指定 port。
  • --detach:讓 Container 在背景執行。
  • --name:定義 Container 的名稱,可以透過該名稱存取 Container。
    • 沒定義的話只能透過派發的 UUID 存取。