完成Docker安裝後,您應該會看到一個新視窗,引導您進行使用Docker建立映像檔和容器的第一步驟:
這是一種有趣的方式,讓您快速下載並執行第一個容器映像檔。
您可以在此應用程序內建的右側終端中運行命令,但我更喜歡在自己的終端中執行。
我打開 macOS 終端,運行 cd dev
進入家目錄中的 dev
文件夾,然後創建一個 docker
子目錄,將用於容納所有的Docker實驗。我運行 cd docker
進入此目錄,然後執行以下命令:
git clone https://github.com/docker/getting-started
此命令創建了一個名為 getting-started
的新文件夾,其中包含 https://github.com/docker/getting-started 倉庫的內容:
現在從該文件夾中,以以下方式運行 docker build
命令:
docker build -t docker101tutorial .
這將使用當前文件夾中的內容構建映像檔,並將其標記為 docker101tutorial
。
這是Dockerfile的內容:
FROM python:alpine AS base
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
FROM node:12-alpine AS app-base
WORKDIR /app
COPY app/package.json app/yarn.lock ./
RUN yarn install
COPY app/spec ./spec
COPY app/src ./src
RUN yarn test
FROM app-base AS app-zip-creator
RUN rm -rf node_modules && \
apk add zip && \
zip -r /app.zip /app
FROM base AS dev
CMD ["mkdocs", "serve", "-a", "0.0.0.0:8000"]
FROM base AS build
COPY . .
RUN mkdocs build
FROM nginx:alpine
COPY --from=app-zip-creator /app.zip /usr/share/nginx/html/assets/app.zip
COPY --from=build /app/site /usr/share/nginx/html
正如您所看到的,它不僅從一個基礎映像檔創建我們的映像檔,而是從3個基礎映像檔創建:python:alpine
,node:12-alpine
和nginx:alpine
。
當您運行 docker build -t docker101tutorial .
時,它將從下載第一個基礎映像檔開始:
然後它將運行我們在Dockerfile中定義的所有命令:
它一直繼續運行,直到到達結尾:
現在我們有了映像檔 docker101tutorial
,我們可以基於此映像檔運行容器。
運行以下帶有參數的 docker run
命令:
docker run -d -p 80:80 --name docker-tutorial docker101tutorial
我們使用 -d
選項在背景中運行容器並打印容器ID。如果您錯過了此標誌,直到容器退出時,您將不會立即返回終端(但如果它具有長期生存,例如運行一個像Node應用程序之類的服務,它將不會自動退出)。
-p
選項用於將容器的80端口映射到主機的80端口。容器在80端口上公開Web伺服器,我們可以將我們計算機上的端口映射到容器公開的端口。
--name
分配一個名稱給容器,最後我們有了我們應該使用來創建容器的映像檔名稱(docker101tutorial
)。
如果您對命令選項有任何疑問,運行 docker <命令> --help
,在這種情況下運行 docker run --help
將獲得非常詳細的說明:
此命令非常快速,您將立即獲得容器ID: