我在交互模式下运行一个带有一些参数的容器。
docker run -i -t --name mycontainer myimage prm1 prm2
ENTERYPOINT是我的应用程序,它使用参数。
会话结束后,我想开始一个新的参数。
docker start mycontainer
docker attach mycontainer
如何将新参数传递到新会话?
PS:这是交互式docker-application的合适场景吗?或者我应该为每个新会话创建一个新容器?
答案 0 :(得分:1)
最好将ENTRYPOINT
保留为默认值sh -c
或my_application
),并使用CMD
代替命令参数
CMD prm1 prm2
这意味着,默认情况下,docker run默认使用prm1 prm2,但您可以通过在下一个docker run上传递新参数轻松覆盖它们。
该方法(上图)基于运行新容器,而不是重新启动“已退出”容器。
这是常见做法,因为持久性数据应保存在您(重新)安装到新容器(docker run -v
)
如果您要重新启动容器,并从不同的参数中受益,那么这取决于您的应用程序:
docker update
命令(PR 15078仍在issue 22490上打开) 不 更新环境变量(仅限cpu和内存)docker cp
将所述属性文件的更新版本复制到该容器,并在其中添加新属性。