Dockerを触っていて、ちょっと気づいたことがあったので書き残しておきます。
git bashからDockerコンテナが起動できない?
docker run
でDockerイメージからコンテナを生成して起動させる場合、以下のようなコマンドを叩くと思います。
$ docker run --rm --name hoge-app -p 4200:4200 -it hoge-app bash
しかしgit bashをターミナルにした場合は以下の警告メッセージが出力され、実行できません。
the input device is not a TTY. If you are using mintty, try prefixing the command with 'winpty'
minttyを使っているならコマンドの頭にwinptyを付けろと言われました。
$ winpty docker run --rm --name hoge-app -p 4200:4200 -it hoge-app bash
言われた通りにwinptyを付けるとちゃんと実行されます。
winpty?
git bashはデフォルトだと、minttyというターミナルエミュレータで動作しており、 minttyのおかげでWindows上でもUNIXライクなコマンドが使えるようになっています。
しかし、minttyからpython
やipconfig
等のWindows上のプログラムを実行した場合、
互換性の問題から正しく実行できない場合が出てくるようです。
winpty
はminttyからでもWindows上のプログラムとの入出力を正しく解釈できるように調整をしてくれます。
docker run
の場合は警告が出ますので、思考停止でwinpty
を頭に付けて差支えはなさそう。
git bashはあくまでgit bashであって、bashではないのね…