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 来构建映像的基础知识。构建镜像后,您启动了一个容器并看到正在运行的应用程序。

相关信息:

相关推荐
-$_$-1 分钟前
【黑马点评】 使用RabbitMQ实现消息队列——1.Docker与RabbitMQ环境安装
分布式·docker·rabbitmq
芯的一天3 分钟前
windows下DockerDesktop命令行方式指定目录安装
windows·docker
帅气的人1231 小时前
使用 docker-compose 启动 es 集群 + kibana
elasticsearch·docker
獨枭1 小时前
Ubuntu 通过 Docker 搭建 GitLab
ubuntu·docker·gitlab
zixingcai2 小时前
dockertop提示Failed to fetch extensions
docker
雪域迷影11 小时前
PostgreSQL Docker Error – 5432: 地址已被占用
数据库·docker·postgresql
莹雨潇潇12 小时前
Docker 快速入门(Ubuntu版)
java·前端·docker·容器
tangdou36909865516 小时前
Docker系列-5种方案超详细讲解docker数据存储持久化(volume,bind mounts,NFS等)
docker·容器
漫无目的行走的月亮19 小时前
在Docker中运行微服务注册中心Eureka
docker
大道归简1 天前
Docker 命令从入门到入门:从 Windows 到容器的完美类比
windows·docker·容器