Docker

用於定期任務時保持 docker 容器啟動的正確方法

  • November 30, 2021

我有安裝和配置軟體的 docker 容器。

沒有任何程序應該一直啟動/執行。

我想要什麼 - 它能夠根據外部事件啟動一些命令。像:

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

docker exec mysupercont /path/to/myothercommand 

但是當容器停止時“exec”是不可能的,而且這個容器裡面有一些“工作”數據,用於該命令,所以我不能使用

docker run ...

每次,因為它從圖像重新創建容器並銷毀我的數據。

保持此類容器執行的“正確”和“最佳”方式是什麼?我可以在裡面啟動哪個命令?

你不需要每次都執行docker run

docker run實際上是兩個命令的序列:“create”和“start”。

執行容器時,必須指定“ -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容器的區別。

此外,請查看“執行”參數“ ”和“ ”的作用的文件-i t``-d

引用自:https://serverfault.com/questions/661909