docker入门教程之将应用程序容器化

将应用程序容器化

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

先决条件

下载这个软件

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

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

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

    text 复制代码
    ├── getting-started-app/
    │ ├── package.json
    │ ├── README.md
    │ ├── spec/
    │ ├── src/
    │ └── yarn.lock

构建应用程序的映像

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

  1. 在该getting-started-app目录中与该文件相同的位置package.json,创建一个名为Dockerfile.您可以使用以下命令根据您的操作系统创建 Dockerfile。

    Mac / Linux / Windows (Git Bash) Windows(命令提示符) Windows(PowerShell)


    在终端中,运行以下命令。

    确保您位于该getting-started-app目录中。替换/path/to/getting-started-app为您的目录的路径getting-started-app。

    console 复制代码
    $ cd /path/to/getting-started-app

    创建一个名为 的空文件Dockerfile。

    console 复制代码
    $ touch Dockerfile

  2. 使用文本编辑器或代码编辑器,将以下内容添加到 Dockerfile 中:

    dockerfile 复制代码
    # syntax=docker/dockerfile:1
    
    https://docs.docker.com/engine/reference/builder#from node:18-alpine
    https://docs.docker.com/engine/reference/builder#workdir /app
    https://docs.docker.com/engine/reference/builder#copy . .
    https://docs.docker.com/engine/reference/builder#run yarn install --production
    https://docs.docker.com/engine/reference/builder#cmd ["node", "src/index.js"]
    https://docs.docker.com/engine/reference/builder#expose 3000
  3. 使用以下命令构建图像:

    在终端中,确保您位于getting-started-app目录中。替换/path/to/getting-started-app为您的目录的路径getting-started-app。

    console 复制代码
    $ cd /path/to/getting-started-app

    构建形象。

    console 复制代码
    $ docker build -t getting-started .

    该docker build命令使用 Dockerfile 构建新映像。您可能已经注意到 Docker 下载了很多"层"。这是因为您指示构建器您想要从node:18-alpine映像开始。但是,由于您的计算机上没有该镜像,因此 Docker 需要下载该镜像。

    Docker 下载映像后,Dockerfile 中的指令会复制到您的应用程序中并用于yarn安装应用程序的依赖项。该CMD指令指定从此映像启动容器时要运行的默认命令。

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

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

启动应用程序容器

现在您已经有了映像,您可以使用docker run命令在容器中运行应用程序。

  1. 使用以下命令运行容器docker run并指定刚刚创建的映像的名称:

    console 复制代码
    $ docker run -dp 127.0.0.1:3000:3000 getting-started

    该-d标志( 的缩写--detach)在后台运行容器。这意味着 Docker 启动您的容器并将您返回到终端提示符。您可以通过在Containers 下的 Docker Dashboard 中查看容器或docker ps在终端中运行来验证容器是否正在运行。

    该-p标志( 的缩写--publish)在主机和容器之间创建端口映射。该-p标志采用 格式的字符串值 HOST:CONTAINER,其中HOST是主机上的地址,CONTAINER是容器上的端口。该命令将容器的端口 3000 发布到 主机上的127.0.0.1:3000( )。localhost:3000如果没有端口映射,您将无法从主机访问应用程序。

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

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

此时,您已经有一个正在运行的待办事项列表管理器,其中包含一些项目。

如果您快速查看一下容器,您应该会看到至少有一个容器正在使用该getting-started映像并在 port 上运行3000。要查看容器,您可以使用 CLI 或 Docker Desktop 的图形界面。

命令行界面


docker ps在终端中运行以下命令以列出您的容器。

console 复制代码
$ docker ps

应出现类似于以下内容的输出。

console 复制代码
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

概括

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

相关信息:

相关推荐
骑着蜗牛撵大象32738 分钟前
穿越 Docker 内核迷雾:镜像分层的叠加态与卷挂载的空间穿梭
运维·docker·容器·联合文件系统·卷挂载·镜像分层·存储驱动
goehou1 小时前
AI 应用上线实战:从本地脚本到 Docker 容器化(密钥、健康检查、镜像瘦身)
docker·ai·llm·部署·教程·容器化
吴声子夜歌1 小时前
Docker入门与实战——Docker数据管理
docker·容器
程序员老赵1 小时前
Docker 部署 TeslaMate:轻松搭建特斯拉车辆数据记录平台
docker·容器·开源
java_logo2 小时前
Docker 部署 Emby:轻松搭建家庭影音媒体服务器
服务器·docker·nas·emby·飞牛nas·群晖nas·轩辕镜像
月落汀兰2 小时前
为什么跨网桥容器 ping 不通?Docker 网络模式详解,端口映射、容器访问外网底层实战
网络·docker·容器
GoodStudyAndDayDayUp4 小时前
一个简单的java jar跑docker
java·docker·jar
凯歌的博客4 小时前
docker镜像代理
运维·docker·容器
zhangjw346 小时前
1-1 PostgreSQL 多平台环境部署:Linux|Docker|Windows|MacOS 完整实操
linux·docker·postgresql
流星白龙6 小时前
【Docker】13.容器基本操作实战
运维·docker·容器