Dockerとは?メリットやインストール方法、環境構築などを入門レベルでわかりやすく解説!
データ分析や開発の環境を整えるのに役立つサービスとしてDockerが注目されています。便利だという噂を耳にしてサービスの実態が気になっている方もいるでしょう。今回はDockerとは何かがわかるよう、概要をはじめメリットや関連する基礎用語、インストール方法、環境構築の流れ、料金プランなどを入門レベルでわかりやすく解説します。Dockerの活用を検討している方はぜひ参考にしてみてください。
Dockerとは?
Dockerは、データ分析環境やコーディング環境をスムーズに構築して共有できるオープンソースのコンテナ型仮想化サービスです。2013年に設立されたDocker Incという会社が開発しました。
後述するDocker EngineやDocker Hubなどの周辺技術を総称してDockerと呼ぶこともあります。
コンピューター上にコンテナと呼ばれる箱を用意して、OSやソフトを入れてパッケージ化して、別のコンピューターのように使える仕組みです。
データサイエンティストやアプリエンジニア、セキュリティエンジニアなど、さまざまな職種で活かせます。IT求人で活用する技術として掲載されることも多いです。
Dockerに関する基礎用語
Dockerの利用を検討すると˙ƒ、Docker DesktopやDocker Engine、Docker Composeなどさまざまな用語が目に入ってきます。
1つひとつの用語を知ることでDockerに対する理解度がさらに増していくでしょう。
引き続き、Docker DesktopやDocker Engine、Docker Composeなど、Dockerに関する基礎用語を簡単に幅広くご紹介します。
Docker Desktop
Docker Desktopは、WindowsやMacOSなどのOS上でDockerの環境を構築できるツールです。
個人やチームのニーズに応じて拡張機能を使用することで、さらに生産性・効率を高めることも可能です。
Dockerを利用するためのベースとなるツールであり、公式ホームページからダウンロードできます。なお、Docker Desktopをインストールすると、後述するDocker EngineやDocker Composeなどもまとめてインストールされます。
Docker Engine
Docker Engineは、アプリを構築してコンテナ化するためのコンテナ化技術です。コンテナの起動を含むさまざまな処理を行います。
Dockerデーモン・Docker CLI・Docker Engineで構成されています。
デーモンと呼ばれる常駐プロセスが、クライアントから命令を待ち続けて、命令にしたがってコンテナを構築・実行する仕組みです。
Docker CLIはDockerコマンドを実行するコマンドラインツールであり、APIを用いて常駐プロセスに命令を与えます。
Docker Compose
Docker Composeは、複数のコンテナを一括で操作できるツールです。複雑なセットアップを1つの設定ファイルで定義して実行できます。
Dockerを活用するときは複数のコンテナを取り扱うことが多い傾向です。
Docker Composeが提供するコマンドを利用すれば、複数のコンテナに行う操作を適切に処理してくれます。
Docker image
Docker imageとは、コンテナを立ち上げるために必要な設定を集約したテンプレートです。アプリを実行する際に必要な変数やコマンド、メタデータなどが含まれています。
イメージを使用することで、ソフトのインストール後に必要な初期設定やカスタマイズを省けるのが便利です。
なお、1つのDocker imageをrun(ラン:実行)することで1つのコンテナを生成できます。
Dockerfile
Dockerfileは、Docker imageの設計図、定義書です。
Docker imageを新規作成するための流れを記載したテキストファイルとなっています。一連の手順を自動化したり自由にカスタマイズしたりすることが可能です。
内容は、プログラムを動作させるサーバーやミドルウェア、コマンドなどの情報となっています。
なお、Dockerfileをbuild(ビルド:組み立てる)ことで、Docker imageを生成できる仕組みです。
Docker Hub
Docker Hubは、Docker imageの共有サービスです。いろいろなDocker imageが公開されており、任意のイメージを取得してコンテナ化を行い、さまざまな環境を利用できます。
作成したイメージをアップロードして、ほかのユーザーと共有することも可能です。
Docker Debug
Docker Debugは、コンテナとイメージ内の問題を診断および解決するための包括的なツールです。
一般的なコンテナは、使用メモリの最小化やセキュリティの強化を目的に、シェルやツールなどを削ぎ落してスリム化したOS上に、アプリを載せた構成にしています。コマンド、コマンドラインを提供するシェルが用意されていない環境にデバッグをしなければなりません。
Docker Debugであれば、任意のコンテナやイメージに対して、デバッグに利用できるツール群を必要に応じて簡単に組み込めます。
Dockerのメリット
Dockerの概要から基礎用語までをお伝えしました。Dockerの利便性を詳しく知るためにメリットが気になった方もいるでしょう。引き続き、Dockerのメリットを解説します。
チーム開発を効率化できる
Dockerで構築したコンテナ(アプリの実行環境)は別のサーバーに移すことも可能です。
すでにご紹介したDockerfileを活用すれば、スムーズに同じ環境を構築できます。
オンライン上で実行環境を共有して、チーム開発を効率化したい場合に最適です。
開発速度をアップできる
従来の仮想環境では仮想マシンごとにゲストOSのインストールが不可欠でした。
OSを複数立ち上げることにより、処理が重くなる点に課題があります。
その一方で、DockerはゲストOSを必要とせず、動作が軽快です。わずか数秒でコンテナ型仮想環境を起動できます。
開発者が開発作業に集中しやすくなるため、開発スピードも上昇させられるでしょう。
開発環境のトラブルを減らせる
Pythonのプログラムを実行するにはPythonの実行環境が必要なように、プログラミング言語の種類によって開発環境が異なります。
開発環境では、さまざまなプログラムや設定ファイルなどが存在しており、一部をアップデートすると予期せぬ不具合が生じる恐れもあります。
無関係だと思っていた設定ファイルが、ほかのプログラムや実行環境と関係しているケースも珍しくありません。
その点、コンテナで各種プログラム、設定ファイルなどを区分すると、アップデートの影響を限定しやすくなったり、実行環境ごと移動しやすくなったりします。
Pythonの概要について知りたい方は下記の記事もチェックしてみてください。
データサイエンティストに必要なPythonとは?学習方法やR・SQLとどっちを学ぶべきかを解説!
Dockerとデータ分析(機械学習システム)との相性
Dockerのメリットをお伝えしました。Dockerのメリットとして特に着目したいのが、データ分析との相性です。
たとえば、データ分析に必要な機械学習システムでは、開発環境・検証環境・本番環境など、環境ごとにモデルの実行環境を構築するケースが多い傾向にあります。
一般的な仮想マシンを利用する場合、環境構築プロセスでインストールしたライブラリのバージョンなどに差異が生じると、開発環境で正常に動いていたモデルが検証環境で動作しない恐れがあります。
その点、Dockerであればモデルの動作に必要な機能などは、すでにご紹介したDocker imageというコンテナ作成の元になるファイルシステムに集約されます。同じDocker imageからコンテナを起動すれば、環境を問わず同じように動作させられるでしょう。
また、機械学習によるデータ分析プロジェクトを複数並行して行う場合、それぞれ異なる環境を整備するケースもあります。Dockerであれば、1つの基盤にコンテナを配置して各プロジェクトのモデルを別々に運用可能です。なお、すでにご紹介したDocker Composeを活用すれば、複数のコンテナを同時に管理できます。
機械学習システムをベースとしたデータ分析のトラブルを防ぎたい場合、効率を高めたい場合などにDockerは重宝するでしょう。
機械学習の意味や勉強方法などを知りたい方は下記の記事をご覧ください。
データサイエンティストに必要な機械学習とは? 意味・定義、深層学習との違い、勉強方法まで解説!
Dockerの環境構築
Dockerのメリットをお伝えしました。Dockerの利便性がわかり、利用を検討してみたくなったのではないでしょうか。
Dockerを利用するときは、一般的にすでにお伝えしたDocker Desktopをインストールします。
インストール方法はOSごとに異なります。ここでは公式ホームページの情報をもとに、Windows・Macを例にDocker Desktopのインストールの基本的な流れをご紹介します。
Windowsにおけるインストールの基本的な流れ
インストール方法は主に対話形式とコマンドライン形式で異なります。それぞれの流れは下記の通りです。
- 対話形式
【ステップ1:インストーラーをダウンロードして実行する】
公式サイトで「Docker Desktopをダウンロードする」を押してWindowsOSに対応したインストーラーソフトをダウンロードします。
デフォルトでは「C:\Program Files\Docker\Docker」にインストールされるので、インストール後に「Docker Desktop Installer.exe」を実行します。
【ステップ2:オプションの選択を確認する】
プロンプトが表示されたら、バックエンドの選択に応じて「構成ページ」で「Hyper-V の代わりに WSL 2 を使用する」オプションが選択されているかどうかをチェックします。
【ステップ3:インストールを続行する】
インストールウィザードの指示に従って、インストーラーを承認してインストールを続行します。
【ステップ4:インストールを完了する】
インストールの成功後に「閉じる」を選んでインストールプロセスを完了します。
※管理者アカウントがユーザーアカウントと違う場合は、ユーザーを「docker-users」に追加しなければなりません。管理者としてコンピューターの管理を実行して、「ローカル ユーザーとグループ」 >「グループ」 > 「docker-users」に移動したあと、右クリックでユーザーをグループに追加しましょう。サインアウトして再びサインインすると変更が有効になります。
【ステップ5:Docker Desktopを起動する】
Docker Desktopはインストールしても自動で起動しません。Docker Desktopを手動で起動します。
- コマンドライン形式
「Docker Desktop Installer.exe」をダウンロードしたあと、Docker Desktop をインストールするために下記のコマンドを実行します。
"Docker Desktop Installer.exe" install
PowerShellを使っている場合は、下記のコマンドを実行します。
Start-Process 'Docker Desktop Installer.exe' -Wait install
Windows コマンドプロンプトを使う場合は下記のコマンドを実行します。
start /w "" "Docker Desktop Installer.exe" install
※管理者アカウントがユーザーアカウントと違う場合は、対話形式のケースでお伝えした通り、ユーザーを「docker-users」に追加しなければなりません。下記のコマンドを実行します。
net localgroup docker-users <user> /add
Macにおけるインストールの基本的な流れ
Macにおけるインストールの流れも対話形式、コマンドライン形式に分かれています。それぞれのインストールの流れは下記の通りです。
- 対話形式
【ステップ1:インストーラーをダウンロードして実行する】
公式サイトで「Docker Desktopをダウンロードする」を押してMacOSに対応したインストーラーソフトをダウンロードします。
【ステップ2:インストーラーを開いてアイコンをドラッグして移動させる】
Docker.dmgインストーラーをダブルクリックして開き、Docker アイコンをApplicationsフォルダーにドラッグして移動させます。Docker Desktopはデフォルトで「/Applications/Docker.app」にインストールされる流れです。
【ステップ3:フォルダをダブルクリックして利用規約に承諾する】
Docker.appフォルダーをダブルクリックします。Docker メニューにサブスクリプションサービス契約の説明が表示されるので確認しましょう。利用規約に問題がなければ承諾します。承諾後にDocker Desktopが起動されます。
- コマンドライン形式
Docker DesktopをApplicationsフォルダにインストールするために、ターミナルで下記のコマンドを実行します。
sudo hdiutil attach Docker.dmg
sudo /Volumes/Docker/Docker.app/Contents/MacOS/install
sudo hdiutil detach /Volumes/Docker
対話形式の場合と同様に、Docker Desktopはデフォルトで「/Applications/Docker.app」にインストールされる流れです。
※トラブルを回避するために必ず公式ホームページの情報を参照したうえでインストールを実行してください。
参照:
Windows に Docker Desktop をインストールする(Docker)
MacにDockerデスクトップをインストールする(Docker)
※Dockerの公式ドキュメントを有志で日本語に翻訳しているサイトがあるので、公式ページの情報が英語でわかりづらいという方は、参照してみるとよいかもしれません。
参照:
WindowsにDocker Desktop をインストール(Docker ドキュメント日本語化プロジェクト)
MacにDocker Desktop をインストール(Docker ドキュメント日本語化プロジェクト)
データ分析環境を構築する基本的な流れ
Dockerをインストールすれば、データ分析用の環境も構築可能です。たとえば、ローカルからWebブラウザを使ってプログラミング言語Pythonを用いたデータ分析環境にアクセスできるシステムを準備できます。
基本的な流れとしては、必要なパッケージをインストールするフローをDockerfileに記述します。データ分析環境を構築する主な流れは下記の通りです。
【ステップ1:Dockerfileを作成する】
コマンドで任意のフォルダにDockerfileを作成して開きます。
【ステップ2:Dockerfileにインストール設定を記述する】
Dockerfileに、例としてAnacondaというデータサイエンスに必要なPythonモジュールが含まれたパッケージをインストールする内容について記述します。AnacondaにはPythonのコーディング、実行結果の確認ができるJupyter Labが含まれています。
【ステップ3:Dockerfileにログイン処理まで記述する】
ファイル内では、Docker imageをrunしたときに、Jupyter Labを起動させてログインするまでの処理も記述します。
【ステップ4:Dockerfileをビルドしてイメージをランする】
Dockerfileを作成したらコマンドでbuildします。成功するとイメージIDが表示されるので、そのままイメージをrunします。
※Jupyter Labはデフォルトでポート8888を使用します。コマンド入力時のオプション指定(-p)で、コンテナのポート 8888 をホストのポート 8888 にマッピングして、ホスト側からコンテナのポートにアクセスできるように設定します。
※コンテナの作業ファイルをホスト側に作成するために、コマンド入力時のオプション指定(-v)で、ホストとコンテナのファイルシステムをマウントする設定もします。
【ステップ5:ブラウザからデータ分析環境にアクセスする】
ブラウザからlocalhost:8888にアクセスしてJupyter Labのホーム画面を表示させます。アクセスしてもページが見つからないという旨が表示される場合、ほかのプロセスが8888ポートを使用しているかもしれません。オプションで8888以外のポート番号を設定することも検討しましょう。
Kaggleの環境を構築する基本的な流れ
Kaggleとは、世界的に知名度の高いデータ分析コンペのプラットフォームです。
Dockerを利用すれば、ローカルにKaggleと同様のデータ分析環境を構築することもできます。
Pythonのデータ分析環境を整える方法をお伝えしたときは、Dockerfileの中身を記述するパターンをご紹介しましたが、KaggleのDocker imageを取得してイメージをrunしてコンテナを実行することも可能です。
runコマンドを使うときに「--name kaggle」のように指定すれば、コンテナにkaggleという名前を設定できます。
Kaggleのメリットや使い方、勉強法などを知りたい方は、下記の記事をご覧ください。
Kaggleとは? メリットや使い方、勉強法などを解説!【初心者向けのコンペ一覧も掲載】
※ここまでご紹介したデータ分析環境の構築方法については、Dockerによる環境構築のイメージを湧かせることを目的に解説しており、入門レベルを想定して一部の流れを省略しています。
さまざまなエンジニアがDockerfileの具体的な記述内容やコマンド処理を公開しているので、適宜モデルケースを探して理想の環境を構築してみてください。あるいは後述するメンターに詳細について相談してみてください。
Dockerによる環境構築が難しい場合はメンターに相談する
Dockerでデータ分析環境を構築するフローをご紹介しましたが、実際に挑戦してみると不明点や疑問点が生じて挫折する恐れもあります。構築してみたけれど、実際にやり方があっているのか、いまいち腑に落ちないケースもあるでしょう。
データ分析の環境構築が難しい場合はメンターに相談するのもおすすめです。
ビッグデータラボでは、データサイエンスの専門家によるメンタリングプログラムを提供しています。
未経験でもデータ分析のスキルを効率的に習得して、最短でデータサイエンティストを目指せるようにサポートしています。
無料相談に対応しているので、Dockerの環境構築に挫折しそうになっている方や、データ分析のスキル習得につまずいている方、データサイエンティストの職種を諦めそうになっている方などは、ぜひ一度お問い合わせください。
Dockerの料金プラン
Dockerでデータ分析の環境を構築できることがおわかりいただけたでしょう。ただ、便利なツールだとコストも気になるところです。
DockerはPersonal・Pro・Team・Businessの料金プランが提供されています。Personalプランであれば無料で利用可能です。
各プランの料金は下記の通りです。
料金プラン | 月額料金 | 利用対象 | 機能例 |
Personal | 無料 | コンテナの利用に興味がある開発者、学生 | ・プライベートリポジトリ1つ
・6 時間あたり 200 イメージの取得 |
Pro | 5ドル~ | イノベーション重視のプロの開発者 | ・プライベートリポジトリ無制限
・1 日あたり5,000 イメージの取得
・最大5個までの同時ビルド
・Personalの全機能 |
Team | 9ドル~/ユーザー | 効率化を目指す開発チーム | ・100ユーザーまで利用可能
・チーム数無制限
・最大15個までの同時ビルド
・無制限のイメージ取得
・Proの全機能 |
Business | 24ドル/ユーザー | 大規模な開発アプローチの確立を目指す企業 | ・ユーザー無制限
・シングルサインオン
・請求書払い
・24時間サポート
・Teamの全機能 |
料金が高いプランほど利用できる機能が多く、Businessはすべての機能を利用できます。
従業員数が250名を超える企業や、年間売上高1,000万ドルを超える企業が商用利用するには、Pro、Team、Businessの利用が必要となっています。
まとめ
Dockerとは、データ分析環境をスムーズに構築して共有できるコンテナ型仮想化サービスです。コンテナごとに分析環境を用意して利用できるため、機械学習によるデータ分析プロジェクトを複数並行して進めるのに便利です。
DockerはWindows・Macともに対話形式あるいはコマンドラインでインストールできます。Dockerfileにデータ分析に必要なパッケージのインストール設定を記述することで、Pythonを用いたデータ分析環境も構築可能です。
ただ、初めてDockerを利用する方であれば、インストールや環境構築などに挫折するリスクも高いです。必要に応じてメンターを探してサポートしてもらいましょう。
- Dockerとは?メリットやインストール方法、環境構築などを入門レベルでわかりやすく解説!
- Dockerとは?
- Dockerに関する基礎用語
- Docker Desktop
- Docker Engine
- Docker Compose
- Docker image
- Dockerfile
- Docker Hub
- Docker Debug
- Dockerのメリット
- チーム開発を効率化できる
- 開発速度をアップできる
- 開発環境のトラブルを減らせる
- Dockerとデータ分析(機械学習システム)との相性
- Dockerの環境構築
- Windowsにおけるインストールの基本的な流れ
- Macにおけるインストールの基本的な流れ
- データ分析環境を構築する基本的な流れ
- Kaggleの環境を構築する基本的な流れ
- Dockerによる環境構築が難しい場合はメンターに相談する
- Dockerの料金プラン
- まとめ
- 関連記事・コンテンツ