Dockerの勉強をやってたら、docker-composeでInteractive modeが使えないということで詰まったけど解決した話です。
→現状のDockerではこの問題は解決しているのでこれをやる必要はありません。
環境
- Windows 10 Pro 64bit
- Cmder
- なおdocker Toolboxを利用です。docker-composeは1.8.0を利用しておりました
問題点
docker-compose runやexecなどを行おうとすると、WindowsではInteractive modeがサポートされてないからdetachで動かしてねって返ってきます。
Interactive mode is not yet supported on Windows.
Please pass the -d flag when using `docker-compose run`.
detachモードでとりあえず動かしてたわけですが、厳しかったので以下のようなコマンドで乗り切ってました。
docker exec -it コンテナ名 composer install
調べると結構躓いた人がいるみたいです。。。私も調べてたら以下の記事にぶち当たりました。
実は次のdocker-compose バージョン1.9で解決する
実はこれ、次のバージョンの1.9で解決します。
Attach interactively on Windows by shelling out
上記がマージされた内容です。Docker for Windowsを利用している人はDOCKER_HOSTのenvを設定する必要がある模様?
まだリリースされてないけど使いたい
すでに1.9.0-rc1から上記がマージされたものが利用できます。
私が見たときはrc3が最新だったので、rc3を利用します。(すでにrc4でした
→もうリリースされたようです。Docker ToolBox側が対応したかはまだ不明です。
- ダウンロードは上記の1.9.0-rc3のdocker-compose-Windows-x86_64.exeを選びます。(もっと新しいバージョンが出ていたらそれを使いましょう)
- ダウンロードし終えたら、DockerToolboxが入っている
C:\Program Files\Docker Toolbox
に移動します。 -
docker-compose.exe
をdocker-compose.exe.old
などにリネームしておきます -
docker-compose-Windows-x86_64.exe
をdocker-compose.exe
にリネーム
$ docker-compose -v
docker-compose version 1.9.0-rc3, build c1e5515
これでwindowsのdocker-composeでInteractive modeが利用できるようになりますー。
やったー!
追記
このdocker-composeの1.9に変更をするとパスの問題が出てくるらしいので、環境変数を設定しておかないとupができなくなります。
(なおこれはDockerToolboxの場合だけみたい?releaseにも書いてますが)
COMPOSE_CONVERT_WINDOWS_PATHS=1
追記その2
Docker ToolBoxのほうでは、v1.12.4からdocker-compose v1.9に対応する模様です。まだRC版ですが・・・。待つ方は待ちましょう。 v.1.12.5でdocker-compose 1.9が導入されてます。これからはそのままtoolboxを入れても動くようになってるでしょう
https://github.com/docker/toolbox/releases
ではでは~