読者です 読者をやめる 読者になる 読者になる

write ahead log

ロールフォワード用

Windows10でDockerを使う

自宅のPCをWindowsにした直後に「そうだ, docker使ってみよう」とふと思いついた.

必要なものと前提

まず, WindowsにおいてはDockerは2種類あるようだ.

  1. VirtualBox上のLinux + docker(Docker Toolbox)
  2. Hyper-V上のLinux + docker(Docker for Windows)

Docker自体, Linuxコンテナプロセスを利用するものなので, Windowsではどうしてもいびつになる.

まぁ, そりゃそうだろうという感じだが.

ところで上記の内で2を使いたいと思ったのだが(だって純正Tool使いたいじゃん)Hyper-VはWindows10では Proにしか入っていない.

私はHomeのパッケージを購入していたので泣く泣くProにアップグレードする必要があった.愚かである. でもまぁ, Windows10はしばらく使おうかなと思うのでよかったかな.

導入

そんなに難しくはない.というか下記のリンク通りにやるとうまくいく.

無償の「Docker for Windows」で手軽にLinuxコンテナを利用する

ただ, MSYS2環境下では以下のようなメッセージが出ることがある.

$ docker run -it ubuntu bash
the input device is not a TTY.  If you are using mintty, try prefixing the command with 'winpty'

メッセージの通りなのだが, TTYが無い(minttyでは無い)からwinpty使ってみれば?ということらしい.

Docker ToolboxのIssueにも同様の内容が挙がっているみたい.

解決策としてはターミナルメッセージの通り, winptyを使えと.

$ pacman -S winpty
...[いい感じにインストール]...
$ docker run -it ubuntu bash
...[いい感じに動く]...

この問題, Windowsな人からしたら当然みたいなんだけど, へっぽこな技術者の私は「へ?」という感じだった. ほへー, ttyないんだー.みたいな.

以下のリンクは大変に詳しい. winptyが生まれる過程のコミュニティの動きには感謝しかない.というかオープンソースコミュニティってすごいね.

参考:MinGW の mintty で対話モード、ついでに vim 設定