Docker入門
Dockerとは、OSレベル仮想化プラットフォームソリューションです。Dockerイメージを用いたコンテナ仮想化システムを構築し、仮想化実行環境を実現します。Dockerにより環境の複製と配布が容易にできますので、開発のスクラップアンドビルドが効率的に実施できます。
コンテナ仮想化システムの活用で、CI(継続的インテグレーション)・CD(継続的デリバリー、継続的デプロイメント)が実現できます。 【参考】:Docker
Dockerコンテナとは
コンテナはホストカーネルを利用し仮想化を実現するものです。仮想マシンと異なりゲストOSが介在しないため、開発者はアプリケーション開発に専念できます。ホストカーネルからはプロセスとして動作し、他のプロセスと分離し管理されます。
コンテナはゲストOSが介在しないので、システムオーバーヘッドの削減と管理が容易になります。Dockerコンテナはこのコンテナの仕組みを実装しています。
Dockerのメリット
Dockerはホストカーネルを利用しているために単一OS上で複数のコンテナが実行できます。このため、OSで用いるシステム資源は少なく済み、メモリー効率の向上がメリットとなります。CPU処理をコンテナアプリケーションに多く割り当てできるので処理能力が高められます。このため一言で言うと「軽量で速い」ことが特長となります。
また環境をイメージとして登録できますので、同一環境の複製が容易で配布がしやすいことも特長です。以上の強みを生かしてCI/CDのサイクルをさらに短周期で迅速に実施することができますので、開発ライフサイクルの効率性が一層高まります。
Dockerリポジトリとは
DockerはDockerイメージを用いてコンテナ動作させるものです。コンテナで用いるイメージは、個々に分離された動作環境テンプレートを表します。アプリケーション実行に必要な変数・コマンドやメタデータを含みます。
Dockerリポジトリとは、イメージの保管場所を指します。またイメージの保管サービス全体をレジストリと言います。Dockerイメージの公開レジストリでデフォルト利用される提供サイトをDocker Hubと言います。
Dockerの使いどころ
Dockerの成り立ちはデベロッパーがOSの面倒を見ずにアプリケーション開発に専念し、さらにデプロイをすぐしたい、という要求から開発された経緯があります。そのためDevOpsのようにソフトウェアのビルド・テスト・デプロイと運用を短サイクルで運用連携する際に効率的に利用できます。
また、環境の複製やテンプレートの利用も可能ですので、同一形態のソフトウェアを利用した大量の関連サービスにも柔軟に対応できます。さらにDockerの仕組みを利用することで運用までの作業手順書を標準化したり、簡素化することができます。
Dockerのセットアップ
DockerではWindows版・Mac版・Linux版のダウンロードモジュールが用意されています。Mac版・Windows版ではDocker Desktopを利用します。Linux版ではDocker Engineをインストールしておきます。 【参考】:Get Started with Docker
2021年8月31日Dockerの料金体系が変更されており、「Personal」「Pro」「Team」「Business」の料金モデルが設定されています。企業規模や同時ビルド数等に応じて適切なモデルを選択します。従業員250名未満かつ1千万USドル未満の年間売り上げ企業は無償プランである「Personal」が利用できます。 【参考】:Pricing & Subscriptions
Docker Windows版のセットアップ概要
Docker DesktopはDocker Hubのサイトからダウンロードできます。 【参考】:Docker Desktop for Windows ダウンロードのリンク先はドキュメントのインストール方法にも記載されており、以下のリンクからも同じモジュールがダウンロードできます。 【参考】:Install Docker Desktop on Windows
インストール方法は以下の通りです。 ・ダウンロードモジュールの起動 Docker Desktop Installer.exeを起動します。
・Configuration画面の確認 「Enable Hyper-V Windows Features」と「 Install required Windows components for WSL 2」のオプション設定を確認します。
・インストール実行 手順に従い「Install」を選択し、終了後「Close」を選択します。
・管理者アカウントの追加 管理者アカウントのadministratorとComputer Managementをdocker-usersグループに追加します。
最初の起動時には新しいライセンス条項が表示されますので、「Accept」をクリックすることで利用可能になります。
Docker Mac版のセットアップ概要
Docker DesktopはDocker Hubのサイトからダウンロードできます。 【参考】:Docker Desktop for Mac 以下のリンクからも同じモジュールがダウンロードできます。 【参考】:Install Docker Desktop on Mac
インストール方法は以下の通りです。 ・ダウンロードモジュールの起動 Docker.dmgをダブルクリックしインストーラを起動します。
・アプリケーションフォルダに登録 Dockerアイコン(Docker.app)をアプリケーションフォルダーにドラッグアンドドロップします。
Windows同様、最初の起動時には新しいライセンス条項が表示されますので、「Accept」をクリックすることで利用可能になります。
Dockerの環境構築
Dockerのセットアップが完了したら利用可能です。コンテナ実行の環境構築にはDocker CLIやDocker Composeを用います。
CLIはコマンドラインインターフェイスでコンテナの「生成と削除」「起動・停止」「プロセスの実行・一時停止と解除」「操作・保全」「稼働状況とログ出力」等のコマンドが提供されています。またイメージの利用やリポジトリの活用もCLIで実施します。WindowsやMacではDocker DesktopでGUIベースで作業を行うこともできます。
Docker Composeは、YAML形式のファイルを用いて複数のコンテナを定義・実行することができます。アプリケーションサービスの生成や起動が効率的に行うことができます。本番稼働のワークフローを効率化することが可能です。
Docker Composeの作業ステップとしては以下の手順に従います。 ・Dockerfileの定義 アプリケーション環境を定義することで再構築可能となります。
・docker-compose.ymlの定義 ファイルにアプリケーション構成サービスを定義します。
・docker-composeの実行 ”docker-compose up” でアプリケーションの起動・実行をします。 【参考】:Overview of Docker Compose
Docker参考書籍と学習方法
DockerはDocker Docsにリファレンスマニュアルが格納されています。最初に基本的な情報を得るにはこちらの公式サイトを確認することをおすすめします。情報は古いですが日本語プロジェクトサイトでは日本語情報も提供されています。 【参考】:Docker Docs 【参考】:Docker ドキュメント日本語化プロジェクト
Dockerのみならず、汎用的なコンテナの知識を得るには市販の学習参考書も各種出版されています。入門者向けのおすすめは以下の書籍です。 ・Docker/Kubernetes 実践コンテナ開発入門 コンテナ技術の基礎からアプリケーション作成まで解説した入門書です。 実際に動作するところまで理解したい人向けです。 出版元:技術評論社 【参考】:Docker/Kubernetes 実践コンテナ開発入門
エンジニア向けには以下の書籍をおすすめします。 ・Docker実践入門――Linuxコンテナ技術の基礎から応用まで GitHubと連携したデプロイ方法を基礎から解説しています。 ITエンジニアのスキルアップでコンテナを理解したい方向けです。 出版元:技術評論社 【参考】:Docker実践入門――Linuxコンテナ技術の基礎から応用まで
プログラマー向けとしては、以下の書籍がおすすめです。 ・プログラマのためのDocker教科書 第2版 インフラの基礎知識&コードによる環境構築の自動化 コンテナ技術を使ったインフラを構築し、アプリケーション開発に役立つ情報がまとまっています。 プログラマー・アプリケーションエンジニア向けです。 出版元:翔泳社 【参考】:プログラマのためのDocker教科書 第2版 インフラの基礎知識&コードによる環境構築の自動化
Dockerは開発から運用までの流れを効率化します
DockerはOSレベル仮想化のプラットフォームとして、「軽量で速い」ことが特長です。また開発から運用までの一連の流れを効率的に実施し、短サイクル化することが可能です。今後多岐に渡るアプリケーションのニーズを満たすため開発周期の短サイクル化が加速すると考えられます。
Dockerを利用しコンテナ環境で開発を進めていくことが求められますので、情報収集に努めることをおすすめします。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから