Docker:附加容器的新参数

时间:2016-07-24 12:44:42

标签: docker

我在交互模式下运行一个带有一些参数的容器。

docker run -i -t --name mycontainer myimage prm1 prm2

ENTERYPOINT是我的应用程序,它使用参数。

会话结束后,我想开始一个新的参数。

docker start mycontainer
docker attach mycontainer

如何将新参数传递到新会话?

PS:这是交互式docker-application的合适场景吗?或者我应该为每个新会话创建一个新容器?

1 个答案:

答案 0 :(得分:1)

最好将ENTRYPOINT保留为默认值sh -cmy_application),并使用CMD代替命令参数

CMD prm1 prm2

这意味着,默认情况下,docker run默认使用prm1 prm2,但您可以通过在下一个docker run上传递新参数轻松覆盖它们。

该方法(上图)基于运行新容器,而不是重新启动“已退出”容器。

这是常见做法,因为持久性数据应保存在您(重新)安装到新容器(docker run -v

的卷(docker volume create)中

如果您要重新启动容器,并从不同的参数中受益,那么这取决于您的应用程序:

  • 如果所述应用可以从环境变量中读取这些参数,那么新的docker update命令(PR 15078仍在issue 22490上打开) 更新环境变量(仅限cpu和内存)
  • 如果所述应用程序可以从属性文件中读取它们,则可以使用docker cp将所述属性文件的更新版本复制到该容器,并在其中添加新属性。