更新应用程序

第1部分中,你已经将一个待办事项应用程序容器化了。在这一部分中,你将更新该应用程序和镜像。你还将学习如何停止和移除容器。

更新源代码

在接下来的步骤中,当您没有任何待办事项列表项时,您将把“空文本”更改为“您还没有待办事项!请在上方添加一个!”

  1. src/static/js/app.js 文件中,更新第 56 行以使用新的空文本。

    - <p className="text-center">No items yet! Add one above!</p>
    + <p className="text-center">You have no todo items yet! Add one above!</p>
    
  2. 使用 docker build 命令构建镜像的更新版本。

    $ docker build -t getting-started .
    
  3. 使用更新后的代码启动一个新的容器。

    $ docker run -dp 127.0.0.1:3000:3000 getting-started
    

您可能看到过这样的错误:

docker: Error response from daemon: driver failed programming external connectivity on endpoint laughing_burnell 
(bb242b2ca4d67eba76e79474fb36bb5125708ebdabd7f45c8eaf16caaabde9dd): Bind for 127.0.0.1:3000 failed: port is already allocated.

发生此错误是因为在旧容器仍在运行时,您无法启动新容器。原因是旧容器已经占用了主机的端口 3000,而机器上的一个进程(包括容器)只能监听特定端口。要解决此问题,您需要删除旧容器。

移除旧容器

要移除容器,首先需要停止它。一旦停止,您就可以移除它。您可以使用 CLI 或 Docker Desktop 的图形界面来移除旧容器。选择您最熟悉的方式。


使用 CLI 删除容器

  1. 通过使用 docker ps 命令获取容器的 ID。

    $ docker ps
    
  2. 使用 docker stop 命令停止容器。将 <the-container-id> 替换为 docker ps 中的 ID。

    $ docker stop <the-container-id>
    
  3. 一旦容器停止,你可以使用 docker rm 命令将其删除。

    $ docker rm <the-container-id>
    

注意

您可以通过在 docker rm 命令中添加 force 标志来一次性停止并删除容器。例如:docker rm -f <the-container-id>

使用 Docker Desktop 移除容器

  1. 打开 Docker Desktop 并进入 容器 视图。
  2. 操作列下,选择您要删除的容器的垃圾桶图标。
  3. 在确认对话框中,选择 永久删除

启动更新后的应用容器

  1. 现在,使用 docker run 命令启动您更新后的应用程序。

    $ docker run -dp 127.0.0.1:3000:3000 getting-started
    
  2. http://localhost:3000 上刷新浏览器,你应该能看到更新后的帮助文本。

摘要

在本节中,您学习了如何更新和重新构建容器,以及如何停止和移除容器。

相关信息:

后续步骤

接下来,您将学习如何与他人共享镜像。