將應用程式容器化
在本指南的其餘部分,您將使用一個在 Node.js 上執行的簡單待辦事項列表管理器。如果您不熟悉 Node.js,請不要擔心。本指南不需要任何 JavaScript 的先前經驗。
先決條件
- 您已安裝最新版本的 Docker Desktop。
- 您已安裝 Git 客戶端。
- 您有一個 IDE 或文字編輯器來編輯檔案。Docker 建議使用 Visual Studio Code。
獲取應用程式
在執行應用程式之前,您需要將應用程式原始碼獲取到您的機器上。
使用以下命令克隆 getting-started-app 倉庫
$ git clone https://github.com/docker/getting-started-app.git
檢視克隆倉庫的內容。您應該會看到以下檔案和子目錄。
├── getting-started-app/ │ ├── .dockerignore │ ├── package.json │ ├── README.md │ ├── spec/ │ ├── src/ │ └── yarn.lock
構建應用程式的映象
要構建映象,您需要使用 Dockerfile。Dockerfile 只是一個沒有副檔名的基於文字的檔案,其中包含一個指令指令碼。Docker 使用此指令碼來構建容器映象。
在
getting-started-app
目錄中,與package.json
檔案相同的位置,建立一個名為Dockerfile
的檔案,內容如下# syntax=docker/dockerfile:1 FROM node:lts-alpine WORKDIR /app COPY . . RUN yarn install --production CMD ["node", "src/index.js"] EXPOSE 3000
此 Dockerfile 以
node:lts-alpine
基礎映象開始,這是一個輕量級的 Linux 映象,預裝了 Node.js 和 Yarn 包管理器。它將所有原始碼複製到映象中,安裝必要的依賴項,並啟動應用程式。使用以下命令構建映象
在終端中,確保您位於
getting-started-app
目錄中。將/path/to/getting-started-app
替換為您的getting-started-app
目錄的路徑。$ cd /path/to/getting-started-app
構建映象。
$ docker build -t getting-started .
docker build
命令使用 Dockerfile 來構建一個新映象。您可能已經注意到 Docker 下載了很多“層”。這是因為您指示構建器要從node:lts-alpine
映象開始。但是,由於您的機器上沒有該映象,Docker 需要下載該映象。在 Docker 下載映象後,Dockerfile 中的指令將您的應用程式複製進來,並使用
yarn
來安裝應用程式的依賴項。CMD
指令指定了從此映象啟動容器時要執行的預設命令。最後,
-t
標誌為您的映象新增標籤。可以將其視為最終映象的一個人類可讀的名稱。由於您將映象命名為getting-started
,您可以在執行容器時引用該映象。docker build
命令末尾的.
告訴 Docker 它應該在當前目錄中查詢Dockerfile
。
啟動應用程式容器
現在您有了一個映象,您可以使用 docker run
命令在容器中執行該應用程式。
使用
docker run
命令執行您的容器,並指定您剛剛建立的映象的名稱$ docker run -d -p 127.0.0.1:3000:3000 getting-started
-d
標誌(--detach
的縮寫)在後臺執行容器。這意味著 Docker 啟動您的容器並將您返回到終端提示符。此外,它不會在終端中顯示日誌。-p
標誌(--publish
的縮寫)在主機和容器之間建立一個埠對映。-p
標誌接受一個格式為HOST:CONTAINER
的字串值,其中HOST
是主機上的地址,CONTAINER
是容器上的埠。該命令將容器的埠 3000 釋出到主機上的127.0.0.1:3000
(localhost:3000
)。沒有埠對映,您將無法從主機訪問該應用程式。幾秒鐘後,在您的網頁瀏覽器中開啟 https://:3000。您應該會看到您的應用程式。
新增一兩個專案,看看它是否如您預期那樣工作。您可以將專案標記為已完成並刪除它們。您的前端正在成功地將專案儲存在後端。
此時,您有一個正在執行的待辦事項列表管理器,其中有幾個專案。
如果您快速檢視您的容器,您應該會看到至少有一個正在執行的容器,它使用 getting-started
映象並在埠 3000
上執行。要檢視您的容器,您可以使用 CLI 或 Docker Desktop 的圖形介面。
在終端中執行 docker ps
命令以列出您的容器。
$ docker ps
應出現類似以下的輸出。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
df784548666d getting-started "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 127.0.0.1:3000->3000/tcp priceless_mcclintock
在 Docker Desktop 中,選擇 Containers 選項卡以檢視您的容器列表。


摘要
在本節中,您學習了建立 Dockerfile 來構建映象的基礎知識。構建映象後,您啟動了一個容器並看到了正在執行的應用程式。
相關資訊
後續步驟
接下來,您將對您的應用程式進行修改,並學習如何使用新映象更新您正在執行的應用程式。在此過程中,您還將學習其他一些有用的命令。
更新應用程式