更新应用程序
原文:https://docs.docker.com/get-started/03_updating_app/
在第二部分中,你已将一个待办事项应用程序容器化。在这部分,你将更新应用程序和镜像。你还将学习如何停止和移除一个容器。
更新源代码
在接下来的步骤中,你将更改当你没有任何待办事项时显示的“空文本”,将其改为“你还没有待办事项!请在上方添加一个!”
在
src/static/js/app.js
文件中,更新第 56 行以使用新的空文本。diff- <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>
使用
docker build
命令构建你的更新版本的镜像。consoledocker build -t getting-started .
使用更新后的代码启动一个新容器。
consoledocker run -dp 127.0.0.1:3000:3000 getting-started
你可能看到了这样一个错误:
consoledocker: 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 移除一个容器
使用
docker ps
命令获取容器的 ID。consoledocker ps
使用
docker stop
命令停止容器。将<the-container-id>
替换为docker ps
中的 ID。consoledocker stop <the-container-id>
容器停止后,你可以使用
docker rm
命令移除它。consoledocker rm <the-container-id>
注意
你可以通过在
docker rm
命令中添加force
标志来一次性停止并移除容器。例如:docker rm -f <the-container-id>
启动更新后的应用容器
现在,使用
docker run
命令启动你更新后的应用。consoledocker run -dp 127.0.0.1:3000:3000 getting-started
刷新你的浏览器,访问 http://localhost:3000,你应该看到你的更新后的帮助文本。
总结
在这一节中,你学习了如何更新和重建容器,以及如何停止和移除容器。
相关信息:
下一步
接下来,你将学习如何与他人共享镜像。