容器化应用程序

在本指南的其余部分,你将使用一个简单的 todo 在 Node.js 上运行的列表管理器。如果您不熟悉 Node.js, 不用担心。本指南不需要任何 JavaScript 经验。

先决条件

获取应用程序

在运行应用程序之前,您需要将应用程序源代码获取到您的计算机上。

  1. 使用以下命令克隆 getting-started-app 存储库

    $ git clone https://github.com/docker/getting-started-app.git
    
  2. 查看克隆存储库的内容。您应该看到以下文件和子目录。

    ├── getting-started-app/
    │ ├── .dockerignore
    │ ├── package.json
    │ ├── README.md
    │ ├── spec/
    │ ├── src/
    │ └── yarn.lock

构建应用程序的镜像

要构建镜像,您需要使用 Dockerfile。Dockerfile 只是一个基于文本的文件,没有文件扩展名,其中包含指令脚本。Docker 使用此脚本构建容器镜像。

  1. getting-started-app目录中,与package.jsonfile 中,创建一个名为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-alpinebase image、 Node.js 和 Yarn 包附带的轻量级 Linux 镜像 Manager 预装。它将所有源代码复制到镜像中, 安装必要的依赖项,并启动应用程序。

  2. 使用以下命令构建镜像:

    在终端中,确保您位于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以安装应用程序的依赖项。这CMDdirective 指定从此镜像启动容器时要运行的默认命令。

    最后,-tflag 标记您的镜像。将此视为最终镜像的人类可读名称。由于您将镜像命名为getting-started中,您可以在运行容器时引用该镜像。

    .docker build命令告诉 Docker 它应该查找Dockerfile在当前目录中。

启动应用程序容器

现在,您有了一个镜像,可以使用docker run命令。

  1. 使用docker run命令并指定您刚刚创建的镜像的名称:

    $ docker run -d -p 127.0.0.1:3000:3000 getting-started
    

    -dflag(简称--detach) 在后台运行容器。 这意味着 Docker 会启动您的容器并将您返回到终端 提示。

    -pflag(简称--publish) 在 host 和容器。这-pflag 接受HOST:CONTAINER哪里HOST是主机上的地址,而CONTAINER是容器上的端口。该命令发布容器的端口 3000 到127.0.0.1:3000 (localhost:3000) 的 URL 中。没有端口 mapping 的 Mapping 应用程序,您将无法从主机访问应用程序。

  2. 几秒钟后,打开 Web 浏览器以 http://localhost:3000。 您应该会看到您的应用。

    Empty todo list
  3. 添加一两个项目,并查看它是否按预期工作。您可以将项目标记为完成并删除它们。您的前端已成功在后端存储项目。

此时,您有一个正在运行的 todo list manager,其中包含一些项目。

如果您快速查看一下容器,您应该会看到至少有一个容器正在运行,该容器正在使用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 (容器) 选项卡以查看容器列表。

Docker Desktop with get-started container running

总结

在本节中,您学习了有关创建 Dockerfile 以构建镜像的基础知识。构建镜像后,您启动了一个容器并看到了正在运行的应用程序。

相关信息:

后续步骤

接下来,您将对应用程序进行修改,并了解如何使用新镜像更新正在运行的应用程序。在此过程中,您将学习一些其他有用的命令。