■ Hypervisorからコンテナへ
一昔前は、仮想化と言えば、Hypervisor(ハイパーバイザー)というソフトウェアを使い、その上にVM(仮想マシン)を作って、OSをインストールして動かすということが主流でした。


有名なところで言えば、VMware ESXi やHyper-V、Virtual Boxなどでしょうか。
ただ、実際には独立したマシンを乗せるために、起動が遅かったり、リソース効率が悪かったりという面はどうしても否めませんでした。
あとはミドルウェアやパッチ適用などの違いにより、環境再現性が変わってしまうため、評価しても微妙な差異により、動作結果が変わってしまったり、エラーが起きてしまったりというところの影響がどうしても大きいということがありました。
実際、業務上でも、お客様環境では発生しても、自分たちの調査環境ではどうしても再現ができない(事象が発生しない)…ということも多々あり、都度苦しめられることに鳴っていました。
コンテナでは、そのあたりのデメリットが改善でき、製品をコンテナイメージとして提供し、コンテナとして動作させていただくことで、動作環境が一定になる…というメリットが大きいです。

実際、業務でもコンテナ開発を経験しました。
最初はもちろん取っ付き難い部分はあるかもしれませんが、理解できていて慣れてくると、環境構築も楽になりますし、評価などの工数や観点も楽になるというのは実感できるかなと。
■ Windows上にコンテナ環境を構築
コンテナはLinux OS上での動作になるため、Windows上でコンテナ環境を作るには、WSL(Windows Subsystem for Linux)をインストールする必要があります。
WSLのインストールは、Powershellで
wsl --install
でインストールできるので簡単です。



続いて、Dockerを動作させるために、Docker Desktopをインストール。


インストール後には再起動が必要になるので、Windowsを再起動。
続いて、セットアップを実施します。

dockerHubへのログインまで実施すると、docker desktopが使えるようになりました。

試しに、コンテナを動かしてみます。
(1) hello-worldコンテナを動作させる

docker run hello-world
を実行することで、hello-worldコンテナを起動させ、どうさせることができることが確認できました。これでdockerHubからのコンテナダウンロードも大丈夫そうです。
(2) nginxコンテナを動作させる

フリーWebサーバソフトウェアとして有名なところで「Nginx(エンジンエックス)」があります。
コンテナでのWebサービス確認としてよく使われるので、こちらもお試し。

docker run -d -p 8080:80 --name localnginx nginx
を実行。
(ポートフォワーディングで、80番ポートへのアクセスを8080番ポートに設定)
(コンテナ名を「localnginx」という名前で作成)
起動したら、
localhost:8080
でアクセスしてみると、nginxの画面が表示されました。

これで、Windows上に構築したUbuntu上で正しくnginxコンテナが動作していることが確認できました。
DockerHubにあるコンテナはこれで動かせるようになりましたね。