📦

コンテナってなに?

2023/09/30に公開

コンテナの利用について

今更ですが、コンテナを利用した環境の構築について調べ始めました。
基本的にWindowsサーバーのシステム開発に携わっていたことで、仮想マシン技術の方が使いやすかったこともあってこれまで触ってきませんでした。

仮想マシンで開発環境を整える場合、実機を設定できる程度の知識は必要で、そこそこコストのかかる作業です。
現在はAWSのEC2をはじめ、容易に環境を構築できるようにはなってきていますが、それでも基礎知識として必要になる内容は多岐にわたります。

では、コンテナ、現在調べているのは情報も豊富なDockerですが、こちらはどうでしょうか?
実際に触ってみて思ったことを書いてみたいと思います。

環境の準備

とりあえず、作業用のPCはWindows環境になるので、Windowsで利用できるDockerを検索で探しました。
AWSなどのサービスを利用すればWindowsにこだわる必要もないですが、ここでは一旦考えないことにします。

お手軽に使ってみるには、DockerDesktopが良いようです。
Docker Desktop

そのほかの方法としては、CPUの仮想化を有効化し、WSL2をインストールした環境に構築するということもできるようです。
WSL を使用して Windows に Linux をインストールする方法

仮想化およびWSL2のインストールはDockerDesktopでも必要なので、結局のところ自動で環境を整えて操作や管理を容易に行えるDockerDesktopを使うか、すべて手作業で環境を整えて操作や管理をコマンドで行うかの違いでした。

DockerDesktopをインストールし、指示に従ってWSL2のインストール、アップデートなどを行うことで、Dockerを利用できる環境を用意できました。

ここで少しハマったのは、有効化した仮想化機能やアップデートしたWSL2などが完全に動作するには、何度かWindowsを再起動する必要があるというところでした。
DockerDesktop自体はインストール後から起動できて操作もできるアプリケーションなので、環境の準備が完全に終わる前にいろいろ触って「動かん?」となっていました。

コンテナはどうやって作るのか?

次にここではまりました。
まずはまっさらの環境を作ろうとして色々調べました。

コマンドをたたくことで作れることはわかりましたが、この時点でまだ環境が完全に出来上がっていなかったので、作成できずに悩みました。

理解が進んでいなかったこともあるので、一旦やめて用意されているイメージから作成してみることにしました。

Dockerfile reference

コンテナ、イメージ、ボリュームの違い

コンテナは実行環境、イメージはスナップショットという説明をされていたページがあり、実際にイメージからコンテナを起動してみて、なるほどなと納得しました。

ボリュームについては最初、コンテナを保存しておく場所という勘違いしていたのですが、コンテナで生成されたファイルやコンテナに適用するファイルを保存しておく、外部ストレージだと理解しました。

コンテナとは何か

実際に内部を見てようやく理解できたのですが、仮想環境を稼働させるためのファイル群を収めたイメージディスクのようなものと認識しました。
コンテナという名称も、納得です。

コンテナを切り替えることで様々な環境を用意できるという仕組みもなんとなくわかりました。

仮想マシンではOSも含めて一つのシステムとして構築する必要がありますが、DockerはOSを共通で利用し、コンテナを切り替えることで容易に内容の異なる環境を構築できます。

さいごに

コンテナの作成方法は抜きにして、仕組みとしては単純で分かりやすいと思いました。
ただ、基礎知識として実機での環境構築が理解できていないと、コンテナを1から構築するというのは難しいように思います。

用意されているイメージを利用すると割り切れば、プログラムの初心者でも比較的容易に開発に入れるので、時間短縮の手段としてはありかなと思います。
コンテナを用意する人の苦労は大きいと思いますが。

現在は開発者といっても様々なレベルの人がいるので、興味があれば環境を1から構築してみるのもありですし、興味のない人は用意されたものを利用することで効率化を図れると思います。

コラボスタイル Developers

Discussion