手机版

Docker实践(13) – 保存开发环境状态

时间:2020-05-09 来源:互联网 编辑:宝哥软件园 浏览:

如果你曾经开发过软件,你可能至少一次地像这样呼叫过,”奇怪了,之前明明正常的!”不过没办法快速地恢复到之前的正常状态,你只能匆忙地去修改代码以尽快完成任务而不至于延期。这就浪费了许多时间。
版本控制软件已经能帮助你快速恢复到指定的正常版本,不过但下面的两个特殊情况会存在问题:

代码无法体现你工作环境系统的状态 你可能还不愿意提交代码

第一个问题比第二个值得关注。虽然像Git这样的现代源代码控制工具可以轻松地创建分支,不过捕获整个开发文件系统的状态不是Git的目的。
Docker通过它的commit功能提供了一个成本低廉和快速的方法来保存容器开发系统的状态,这就是我们下面将要探讨的。

问题

你想保存你开发环境的状态。

解决方法

使用docker commit保存状态

讨论

假如你对你的to-do应用做更改。ToDoCorp的CEO对浏览器显示的标题”Swarm+React – TodoMVC.”不满意,要改为“ToDo- Corp’s ToDo App”。
你不确定如何完成这个任务,所以你可能需要启动应用,并更改文件做试验看会怎样:

$ docker run -d -p 8000:8000 --name todobug1 dockerinpractice/todoapp  3c3d5d3ffd70d17e7e47e90801af7d12d6fc0b8b14a8b33131fc708423ee4372
$ docker exec -i -t todobug1 /bin/bash

docker run命令后台(-d)启动to-do应用容器,映射容器的8000端口到主机的8000端口(-p 8000:8000),命名为todobug1(–name todobug1)。
第二个命令在已运行的容器中启动/bin/bash。-i激活交互模式,-t创建一个TTY。
现在你已经进入容器了,所以试验前先安装编辑器。我们喜欢用vim,所以用以下命令:

apt-get update
apt-get install vim

经过了一翻努力你意识到需要更改local.html,因为你更改如下:
ToDoCorp’s ToDo App
不过CEO想让标题使小写字符,因为她听说这看起来更现代。你想把现在的更改保存下,在另一个终端执行如下命令:

$ docker commit todobug1
ca76b45144f2cb31fda6a31e55f784c93df8c9d4c96bbeacd73cad9cd55d2970

你现在已经提交了刚才的更改,所以之后你可以从镜像运行包含此更改的容器。
下一步你更改local.html:
todocorp’s todo app
再次提交:

$ docker commit todobug1
071f6a36c23a19801285b82eafc99333c76f63ea0aa0b44902c6bae482a6e036

现在在我们这个示例已经有两个镜像ID(ca76b45144f2cb31fda6a31e55f784c93df8c9d4c96bbeacd73cad9cd55d2970和071f6a36c23a19801285b82eafc99333c76f63ea0aa0b44902c6bae482a6e036)。当CEO来评估她想要哪个时,你可以运行任意一个镜像来让你决定。
你可以在新终端运行如下命令来启动两个镜像:

$ docker run -p 8001:8000 ca76b45144f2cb31fda6a31e55f784c93df8c9d4c96bbeacd73cad9cd55d2970
$ docker run -p 8002:8000 071f6a36c23a19801285b82eafc99333c76f63ea0aa0b44902c6bae482a6e036

这样你可以打开http://localhost:8001显示大写的标题页面和http://localhost:8002显示小写页面。
你肯定想知道有没有更好的方法来引用这两个镜像,而不是需要输入这么长的ID。下一篇文章我们会给这些镜像一个名称来更好的引用它。

版权声明:Docker实践(13) – 保存开发环境状态是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。

相关文章推荐