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。- 可以透過
-fflag 另外定義/source所在的位置。
- 可以透過
RUN:bundle/build 該 Image 時執行的指令。CMD:run/deploy 該 Image 後,在 Container 內執行的指令。
也可以定義 .dockerignore 過濾 COPY 執行時要略過的檔案/路徑/資料夾。
每一行定義/指令都會創建一層 layer
- layer 為 stacked,且每層 layer 都是基於前一層的操作/修改。
- 減少 layer 可以增加 build 效率。
- 開始運行 Container 後,會在最上面加一層可以讀寫的 layer。
- 會建立 layer 的指令:
RUN、COPY、ADD
Step 2 | Build Image
docker build --tag [IMAGE_TAG] [DOCKERFILE_PATH]
--tag name:tag:該 Image 的名稱/標籤。- Format
name:tag。
- Format
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 存取。