Edited at

ホスト側のCronで docker run する

More than 1 year has passed since last update.


結論

この記事を書いた直後に、別の解決策を発見してしまった。


crontab

* * * * * docker run -i some-image some-command


癖でdocker run -itしてしまっていたのが原因でした。

↓ここから下は模索中で、恐らく役に立たない記事です。


やりたいこと

定期的に、Dockerイメージを動かしたい。

Docker内部のCronから動かすのではなく、ホスト側のCronでdocker runしたい。

最初、


crontab

* * * * * docker run -it some-image some-command


としていたが、the input device is not a TTYと怒られてしまう。

そこで、予めコンテナを作成&実行しておき、そのコンテナにCronからコマンドを渡すという方法があるらしい。

実行するコマンドは、停止しなければ何でも良い。

docker run -it -d --name some-container some-image tail -f /some/log.log


crontab

* * * * * docker exec some-container some-command



メモ



  • docker exec -itとすると、また怒られてしまう


  • --rmオプションを付けないと、コンテナ名が重なってしまい不可


  • -dオプションで、デーモンっぽく起動できる


  • --rmオプションと-dオプションは併用できない。なんで?

  • Docker内部にCronをインストールしてしまって、cron -fとかで起動しっぱなしにしておいた方が楽かも?


参考