技術メモ

プログラミングとか電子工作とか

Windows 10 Home (64bit)でDockerの環境を構築する

どうも、靖宗です。
Docker for Windowsが出現してからWindowsでDockerを利用するのが簡単になりました。
とはいえ自分の利用しているWindowsがHomeでDocker for Windowsが利用できない人もいるんじゃないでしょうか?ぼくもその一人です。
(アップグレードしろよという突っ込みは受け付けません)
どうやら広大なネットの海で調べたところ、Windows 10 HomeではDocker Toolboxで一応動かせるようなので、そちらのセットアップをしていきたいと思います。

基本的に下記の記事を参考にさせていただきました。

qiita.com

インストーラーを手に入れる

なんてことないのですが、Docker公式としてはあまりToolboxの方を利用して欲しくないのか分かりにくい所にインストーラーがある気がします。
DockerToolboxのリリース一覧から取得しろとのことです。

github.com

f:id:ysmn_deus:20190805123509p:plain
ここ

今回は「18.09.3」というバージョンをダウンロードしましたが、未来にこの記事を見ている人はより新しいバージョンのインストーラーがあると思います。
(上から見てって「Assets」というところにexeファイルがあるのを選んで下さい。) ダウンロードできたら基本的にはインストーラーに従って進めて行きます。

インストール

f:id:ysmn_deus:20190805123824p:plain

自分はこんなかんじですが、Gitがインストールされてない方などはチェックボックスがついてそうです。
要らないことないのでインストールしておくことをお勧めします。

f:id:ysmn_deus:20190805123936p:plain

自分はデスクトップが汚れるのは許せないので「Create a desktop shortcut」はチェックを外しておきます。
この辺はご自由にどうぞ。

DockerToolboxを起動

最後まで順調に進めば「Docker Quickstart Terminal」というショートカットが表示されると思います。
ダブルクリックで起動!

無事くじらAAが表示されればセットアップは完了です。

f:id:ysmn_deus:20190805124639p:plain

試しにコンテナを起動してみる

試しにニンジンXのコンテナを起動してみます。
Dockerの基本的な利用方法については割愛しますが、nginxというコンテナを起動します。

docker run --name ninjin -d -p 8080:80 nginx

f:id:ysmn_deus:20190805125219p:plain

基本的にインストールし終わってパスが通ってる状態であればDocker Quickstart Terminalのコンソールからコマンドを打たなくてもPowerShellやcmd.exeでdockerコマンドが通ると思います。

VirtualBox上のVMのポートフォワーディング

Docker for Windowsならたぶんここでブラウザに「http://localhost:8080」でnginxが表示されると思うのですが、今回はDockerToolboxを利用しているのでもう一手間要ります。
VirtualBoxに「default」という仮想マシンが作成されていると思いますが(環境によっては変わる?)、このVM上でDockerが動いています。

f:id:ysmn_deus:20190805131139p:plain

なので普通にコンテナを起動すると、ポートフォワーディングはdefaultという仮想マシンへ渡されます。
なので、なにも設定していないとWindows側からは見れません。

f:id:ysmn_deus:20190805131813p:plain

今回はnginxをdefaultというVMには8080に渡しているので、defaultからWindowsへ8080に渡す設定を追加します。
VirtualBox仮想マシンなのでVirtualBoxで設定します。

f:id:ysmn_deus:20190805132007p:plain

f:id:ysmn_deus:20190805132023p:plain

f:id:ysmn_deus:20190805132037p:plain

defaultのポートフォワーディングが設定できれば、Windowsのブラウザ上からもnginxへとアクセスできるようになります。

f:id:ysmn_deus:20190805132127p:plain

ブラウザ上で「localhost:8080」にアクセスすれば、nginxのデフォルト表記が確認できると思います。

f:id:ysmn_deus:20190805132202p:plain