我有泊坞窗容器与安装和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
总结一下 :你必须了解run
和start
容器的区别。
另外,请查看“运行”参数“ -it
”和“ -d
”参数的文档 。