LinuxのcronでDockerコンテナを起動して実行するときに「the input device is not a TTY」のエラーが出たら

LinuxのcronでDockerコンテナを起動して実行させていたのですが、うまく実行されていないようで気になっていました。

ということで、エラーを確認したのですが、cronのログには何も出ないのですよね。メールの方にエラーは出力されています。


使い慣れない mail コマンドでメールを確認したら、「the input device is not a TTY」のエラーが出ていました。

調べると、「-it」オプションをつけていたのがいけなかったようです。「-i」にすることで解決しました。

こんな感じ。

10 * * * * cd ${HOME}/app; /usr/bin/docker run -v $(pwd):/home/dev/app -i --rm custom:v0.1 /bin/bash -c 'python app/app.py'

ツイッターのつぶやきを、自分の別ブログへ記録しているのですが、Javaで作っていたものをPythonへ移行して、ついでにdockerで実行するようにしました。手元のKVMで動かしているCentOS7へpython3環境を用意するより簡単そうだったので、dockerを使っています。KVM上のLinuxでもdockerは動くということで、便利です。

以前、仮想マシンを導入しはじめた頃は、KVMとVirtualBoxは共存できなかったので、マシンを別にして、両方使えるように環境を用意しています。dockerでコンテナを用意するようにしていけば、どちらでも動かせるので良さそう。KVMを動かしているホストマシン上でdockerを動かせるのか? VirtualBoxを動かしているホストマシン上でdockerを動かせるのか? といったところは気になっていますが、まだ確認していません。

macOSとかでdockerとVirtualBoxが同時に両方動かせないといった話は聞かないので、たぶん大丈夫なのだと思います。ただ、ホストマシンはできるだけシンプルな構成にしておきたいので、「dockerは仮想ゲストマシンで動くなら、それでいいや」と考えています。

仮想マシンは数が増えてきていて10台以上になってきていて、メンテナンスもそこそこ大変です。そういえば、年末年始にアップデートとかを考える必要がありますね…

同じタグの記事: Docker
同じカテゴリの記事: Linux