容器化应用程序
在本指南的剩余部分,您将使用一个运行在 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)。如果没有端口映射,您将无法从主机访问应用程序。 -
几秒钟后,打开您的 Web 浏览器访问 http://localhost: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 来构建镜像的基础知识。构建镜像后,您启动了一个容器并看到了正在运行的应用程序。
相关信息:
下一步
接下来,您将对应用程序进行修改,并学习如何使用新镜像更新正在运行的应用程序。在此过程中,您将学习一些其他有用的命令。
更新应用程序