恢复docker容器的运行参数

时间:2017-03-27 17:27:06

标签: docker

我经常发现自己需要重新创建容器,对最初用于docker run容器的参数进行微小修改(比如更改已发布的端口,网络,内存量等)。

现在我正在制作图像并运行它们来代替旧容器。

这样可以正常工作,但我并不总是保留docker run的原始参数,有时(特别是当有很多事情需要定义时),恢复它们会变得很痛苦。

有没有办法从现有容器中恢复docker run个参数?

4 个答案:

答案 0 :(得分:7)

抱歉,迟到了几年,但是我有一个类似的问题,但还没有令人满意的答案,所以我仍然需要找到出路。

我找到了两个解决此问题的消息源:

  • 一个gist

    要运行,请将其保存到文件中,例如run.tpl并执行docker inspect --format "$(<run.tpl)" name_or_id_of_running_container

  • 一个docker image

    快速运行: $ docker run --rm -v /var/run/docker.sock:/var/run/docker.sock nexdrew/rekcod <container>

这两种解决方案都非常易于使用,但是第二种解决方案未能为Nginx容器生成命令,因为它们无法像这样"nginx" "-g" "daemon off;"

那样对其进行引用

因此,我专注于第一个解决方案,这是一个Golang模板,旨在提供--format的{​​{1}}参数。我喜欢它,因为它简单,优雅,并且不需要其他工具。

我对my forked gist进行了一些改进,并通知了原始作者。

我希望它对其他人有帮助:)

答案 1 :(得分:0)

执行此操作的最佳方法是不手动键入命令。将它们放入shell脚本... linux / mac上的.sh文件或Windows上的.cmd文件。然后你只需运行shell脚本来创建容器,你就不必担心重新输入命令和选项,你永远不会弄错它们等等。

就个人而言,我用&#34; npm脚本编写我的脚本&#34;在我的package.json文件中。但是任何可以运行带参数的命令行程序

的工具都可以完成同样的事情

我这样做以及make sure i never fail to build my images or run my containers的其他一些技巧。使docker生活变得更容易。 :)

答案 2 :(得分:0)

您可以使用select * from t where find_in_set(uniq, ( select group_concat(uniqs) from ( select group_concat(case when t2.idw like '%\_pronto\_' then t2.uniq end) as uniqs from t t2 group by userid, idc having count(*) > 1 ) t )) = 0; 来获取容器的配置。从那里重建realm命令可能有点单调乏味。

另一种选择是使用docker inspectdocker run搜索您的shell历史记录(如果您使用history | grep "docker run")。这样,你不需要尽力保存命令,但仍然可以快速恢复它们。

答案 3 :(得分:0)

对此有几点答案。使用docker-compose运行容器,然后您可以运行撰写文件并保留所有配置。显然,compose是针对多容器应用程序而设计的,但对于单容器,复杂run参数用例而言被大量低估。

第二个是将run命令放入图像上的LABEL。看看Label Schemadocker.cmd等等......然后您可以从图像(或从Dockerfile)轻松检索。