当Docker容器用于定期任务时,保持正确的方式

我有泊坞窗容器与安装和configuration的软件。

没有任何计划应该始终开始/运行。

我想要的 – 根据外部事件启动某些命令的能力。 喜欢:

docker exec mysupercont /path/to/mycommand -bla -for 

 docker exec mysupercont /path/to/myothercommand 

但是当容器停止时,“exec”是不可能的,而且这个容器里面有一些“工作”的数据,用于这个命令,所以我不能使用

 docker run ... 

每一次,因为它从图像重新创build容器,并摧毁我的数据。

保持这种容器运行的“正确”和“最佳”方法是什么? 我可以从哪里开始?

每次docker run都不需要执行。

docker run实际上是两个命令的序列:“创build”和“开始”。

当你运行容器时,你必须指定“ -it ”:

-i,–interactive = false即使未连接,也要保持STDIN打开状态
-t,–tty = false分配一个伪TTY

例:

 docker run -it debian:stable bash 

工作完成后,在启动时指定的命令(在我的例子bash中)。 例如,您执行“退出”。 集装箱站:

 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1329c99a831b debian:stable "bash" 51 seconds ago Exited (0) 1 seconds ago goofy_bardeen 

现在你可以重新开始

 docker start 1329c99a831b 

容器启动并再次执行命令“bash”。
用命令连接到这个会话“bash”

 docker attach 1329c99a831b 

总结一下 :你必须了解runstart容器的区别。
另外,请查看“运行”参数“ -it ”和“ -d ”参数的文档 。