皆様こんにちは、受託コンサルティングチームのkazsakです。
本日はコンテナ型仮想化ソフトウェアの代表格であるDockerの紹介を通じて、仮想環境の入門記事を書いてみようと思います。
「仮想化」「仮想環境」「コンテナ」・・弊社の受託解析業務でも頻繁に登場するワードですが、馴染みのない方には難しく感じられるかもしれません(私もそうでした)。
今回はそのような方向けに、「仮想環境とはなんぞや」「Dockerって何がいいの?」といった疑問にお答えします。
そもそも仮想環境って?
仮想環境とは、お使いのPCの中に他の部分から完全に隔離された「小部屋」を作る技術です。この小部屋の中に目的に応じたOSと解析ツールなどを配置することで、PC全体に影響を与えず、また外部からの干渉を受けずに解析や開発を行うことができます。
PCを1つの実験室に例えると、コンタミ防止や遮光のために実験室をパーテーションなどで区切り、「培養室」や「暗室」といった「小部屋」を作るのに似ています。
「ツールAを動かすためにPythonをアップデートしたら、今まで動いていたツールBが動かなくなっちゃった・・」といった「解析環境の汚染」と呼ばれるトラブルは、DRY解析でもしばしば発生します。
こうしたトラブルへの強力なソリューションとなるのが、仮想環境の構築です。そして、この仮想環境を手軽に実現するツールとして、業界のデファクトスタンダードとなっているのがDockerというわけです。
Dockerのいいところ
仮想環境を構築する方法は他にもありますが、その中でもDockerが選ばれている大きな理由は、めちゃくちゃ手軽で取り回しがきくことにあります。
仮想環境を構築する伝統的な手法として仮想マシン(VM)が挙げられます。VMはPCのハードウェア(CPUやメモリなど)をソフトウェアで丸ごとシミュレートし、その上にOSをインストールすることで仮想環境を作ります。要はかなり大がかりなことをしているので、起動に時間がかかったり、多くのリソースを消費してしまいます。
一方、Dockerが採用する「コンテナ」技術は、ホストPCのOSが持つ核となる部分(カーネル)を全ての仮想環境(コンテナ)で共有します。これにより、圧倒的な軽量性と、作成・削除といった取り回しのしやすさを実現しています。
さらに、Dockerfileと呼ばれるコンテナの設計図のようなものを活用することで、他のPCやサーバーで全く同一の環境を再現でき、高い移植性を発揮できます。
これにより、例えば「自分のPCでは動いた解析が、他の環境では動かない・・」といった問題を根本的に解決してくれます。
まとめると、速くて効率的で移植性が高い!これがDockerの大きな利点です(もちろんVMにもVMのいいところがあるんですが、ここでは割愛します)。
Dockerを導入してみよう
さて、Dockerをいいところが分かったところで、早速あなたのPCに導入してみましょう。
ここでは、WindowsやMacでDockerを手軽に始めるための公式アプリ「Docker Desktop」のインストールと、ごく簡単なコマンド操作を紹介します。
Docker Desktopは公式サイトよりダウンロードできます。
<コマンドテスト環境>
- Ubuntu 24.04.2 LTS
- Docker version 28.3.3
【Windowsの場合】
上記リンクからWindows版をダウンロードし、インストーラーをダブルクリックして画面の指示に従ってください。
【Macの場合】
お使いのMacのCPUが「Intel Chip」か「Apple Chip (M1/M2など)」かでインストーラーが異なります。ご自身の環境に合った方を選んでダウンロードしてください 。
※Docker Desktopは、個人利用、教育、非商用オープンソースプロジェクト、そして中小企業(従業員250人未満 かつ 年間収益1,000万ドル未満)では無料で利用できます。これを超える規模の企業での利用は有料サブスクリプションが必要です 。
インストールが無事に完了したら、ちゃんと動くかコマンドを叩いて確認してみましょう。
Macの場合は「ターミナル」、Windowsの場合は「PowerShell」または「コマンドプロンプト」を開いて、以下のコマンドを打ち込んでみてください。
1. バージョンの確認
まずは、DockerがPCに認識されているか確認します。
docker --version
Docker version 28.3.3, build... のようにバージョン情報が表示されれば、インストールは成功です 。
2. 「Hello, World!」を実行してみる
いよいよ、記念すべき最初のコンテナを動かしてみましょう。
docker run hello-world
これを実行すると、画面に Hello from Docker! から始まるメッセージが表示されたかと思います。
このとき、コマンドの裏側ではこんなことが起きています。
PCの中に hello-world というイメージ(コンテナのテンプレート)がないか探す 。
見つからないので、インターネット上の公式保管庫「Docker Hub」からイメージをダウンロードしてくる 。
ダウンロードしたイメージを元に、コンテナ(小部屋)を作成して実行する 。
コンテナが実行した結果(Hello from Docker!というメッセージ)が、私たちの画面に表示される 。
3. コンテナの後片付け
hello-worldコンテナは、メッセージを表示するという役目を終えてすぐに停止しています。
docker ps
というコマンドを打つと実行中のコンテナの一覧が見れますが、hello-worldはもういないはずです。
停止したものも含めて全てのコンテナを見るには、-a
オプションをつけます。
docker ps -a
すると、STATUSがExited(終了済み)となったhello-worldコンテナが見つかるはずです 。
このように一度作ったコンテナは、消さない限りPCに残り続けます。不要になったコンテナは、以下のコマンドで削除しましょう。<コンテナID>の部分は、docker ps -a
で表示された英数字に置き換えてください(先頭の数文字でも可能です)。
docker rm <コンテナID>
これで後片付けも完了です!この「run(実行)→ps(確認)→rm(削除)」という流れが、Docker操作の基本サイクルになります 。
おわりに:Docker学習の旅へ
弊社のブログでは、Dockerのインストールから実際の使い方、環境構築などさらに実践的な内容を解説した記事も公開しています。
・docker超入門 - アメリエフの技術ブログ
Dockerのインストールの案内から、基本的なコマンドなどをまとめています。
・Dockerfileを用いた初期設定:ユーザ追加 - アメリエフの技術ブログ
Dockerの設定ファイルであるDockerfileを用いたDocker imageの初期設定について解説しています。
・その他、「Docker」で検索するといろいろと便利な関連記事が出てきます。
また、以下は外部のお役立ちリンクです。
・Docker公式ドキュメント(https://docs.docker.com/)
・biocontainers(https://biocontainers.pro/)
biocontainersは様々なバイオインフォマティクスツールをDockerコンテナとして整備し、公開しているコミュニティプロジェクトです。
ぜひ、これらの記事を次のステップとして、Docker学習の旅を続けてみてください。あなたの解析が、より快適でクリエイティブになることを願っています!