
Apricot Web System
- Web application
Dockerとは
Dockerとは、非常に動作が軽量なコンテナ型のアプリケーション実行環境のことです。従来のホスト型やハイパーバイザー型は動作が遅いというデメリットがありましたが、コンテナ型は処理が軽量な仕組みになっているためストレスなく環境の構築や開発を進められます。同じ環境をほかの開発者が簡単に構築できる特徴もあり、Dockerを活用する場面は増えてきました。そこで今回は、Dockerの基本情報や導入すべき理由、環境構築の流れ、利用頻度が高いコマンドについて紹介します。
1
1.Dockerとは?

Dockerは、「コンテナ仮想化」と呼ばれる仮想環境を構築するソフトウェアです。
ホストとなるPCやサーバー上に仮想的なOSを立ち上げることで、別なOS・環境を立ち上げられます。
①仮想マシンとの違い
有名な仮想化ソフトウェアには、大きく分けて3種類が存在します。
- ホスト型仮想化
- ハイパーバイザ型仮想化
- コンテナ仮想化
ホスト型やハイパーバイザ型はいわゆる「仮想マシン」を提供するソフトウェアで、ハードウェアも仮想化の対象とします。そのため、その仮想マシン専用のCPUやメモリ、GPUを割り当てることが可能です。
一方で、コンテナ仮想化はOSの「カーネル部分」を共用し、OSのコア機能よりも上位のみを仮想化します。
「カーネル部分」を共用することで、軽量かつ高速な動作を可能とするのです。

②Dockerの使いどころ
Dockerは、主にアプリケーションサーバーの構築に利用されます。
「CPUやメモリといったリソースを効率よく使う」ことが得意であるDockerは、現時点ではクラウドを活用するWeb系のアプリケーション開発に利用されています。
実は、Dockerのコア技術であるコンテナ仮想化は、軽量に動作する反面ハードウェアを占有できません。
これはつまり、GPUを利用するようなVDI(仮想デスクトップ)の運用には向いていないことを意味します。
「従来の仮想マシン環境のすべてを代替できるわけではない」ことに注意しましょう。
2
2.Dockerで何ができる?
次に、Dockerを使うメリットを紹介します。
①アプリケーションをすばやく構築・テスト・デプロイできる
Dockerを利用して「コンテナイメージ」を作成することで、アプリケーションの開発環境や本番環境を容易に作成できます。
ホスト型やハイパーバイザ型の仮想マシンと異なり、コンテナ仮想化は非常に高速に動作します。
ハイパーバイザであれば、OSの起動だけで数十秒かかるところが、コンテナであれば数秒で起動できるのです。
また、OSやミドルウェア、バイナリといったデータをまとめた「イメージファイル」の容量が小さいことも大きなメリットで、ネットワークを通じた展開も高速に進みます。
②どこでも誰でも同じ環境を作れる
コンテナイメージには、バイナリデータの他にTomcatやApacheといったミドルウェアを含めることが一般的です。
これが何を意味するかというと、「コンテナイメージをダウンロードして実行するだけで実行環境が立ち上がる」ということです。
これまでは、
・ソースのダウンロード
・ビルド
・アップロード
といった作業が各個人に必要だったのですが、Dockerを活用することでその手順が省略されます。
Docker自体もコマンドですぐ実行できるため、コマンドひとつでローカルに開発環境を構築できるということになります。
③開発環境による問題を減らせる
Dockerコンテナ上のOSはどの環境でも一律になるため、WindowsとMacでそれぞれ開発をしても、Docker上で動作するOSは同じです。
そのため、たとえばWindowsとMac、Linuxの間で起きるような環境差異による問題が起きにくくなります。
特に、Windowsでよく発生する文字コードによる問題が起きないことは大きなメリットと言えるでしょう。
3
3.Docker入門者が覚えておくべき用語

基本的な特徴やメリットを押さえたところで、次はDockerを使ううえで覚えておくべき用語を紹介します。
①コンテナ
「コンテナ」は、Docker上で動作する仮想環境を指します。
実は、この「コンテナ」の考え方はDockerのオリジナルではなく、Linux自体に存在する機能です。
詳細は割愛しますが、カーネルより上位の機能を分離することで、OSやミドルウェアの動作を独立させるために開発されました。
Dockerを利用するうえでは、「仮想環境として動作する1単位」とまずは理解するとよいでしょう。
②Docker Engine
Dockerのコンテナを操作するコア機能を指します。
主に、
・Dockerをコマンドラインから利用する「CLI」
・外部から利用するための「API」
・Dockerコンテナを管理する「Daemon(デーモン)」
から構成されています。
③Dockerイメージ
Dockerイメージは、Dockerで利用できるコンテナの情報が格納されたイメージファイルです。
主に、
・OS
・ミドルウェア
・アプリケーション
・データ
といった、Docker上で動作するコンテナに関する情報をひとまとめにしたものです。
Dockerでは、このイメージファイルを元に「コンテナ」を起動します。
④Dockerfile
Dockerfileは、上述のDockerイメージを作成するためのスクリプトファイルです。
Dockerfileには、主に以下のような情報を記載します。
・インストールするアプリケーション
・環境変数
・コピーするバイナリファイル
Dockerfileを用いてDockerイメージを作成する、と覚えましょう。
4
4.Dockerのエコシステム
基本的な概念を理解したところで、Dockerを用いたエコシステムを紹介します。
①Docker Hub
Docker Hubは、Dockerイメージが公開されている場所です。
GitHubがソースコードを公開する場なのに対し、Docker HubはDockerイメージを公開する場所です。
さまざまなイメージが公開されていますので、Dockerでミドルウェアを利用したい場合にはまずは探してみるとよいでしょう。
②Docker Compose
Docker Composeは、Dockerで複数のコンテナを利用する際に便利なアプリケーションです。
docker-compose.yamlというファイルを作成することで、複数のコンテナを一度に起動できます。
たとえば、Javaのアプリケーションサーバーとデータベースサーバーのふたつのコンテナが必要な場合、Docker Composeを利用することでふたつのコンテナを一緒に管理できます。
③Kubernetes
Kubernetesは、「コンテナオーケストレーション」と呼ばれているサービス。大規模なアプリケーションの実行環境を管理できるソフトウェアです。
Dockerは、主にコンテナの起動や終了といった部分を管理します。それに対し、Kubernetesは複数のホストサーバーを同時に管理し、適切にコンテナをデプロイできます。
ロードバランシングや自動でコンテナを再起動する機能など、Docker単体にはない管理機能を持っているのがKubernetesの大きな特徴です。
ローカルではDockerを、運用ではKubernetesを利用する場合もあります。
Dockerを利用する開発に携わるのであれば、Kubernetesの存在はしっかりと押さえておきましょう。
④Docker Desktop
Docker Desktopは、WindowsまたはmacOS上で動作するデスクトップアプリケーションで、GUIを通じてDockerを利用できます。
ただし、Docker Desktopは完全無料ではないため注意しましょう。
公式サイトによると、以下の条件の場合には料金を支払う必要があります。
250名以上もしくは11億円以上の企業でDocker Desktopを利用する場合には、有料となります。
個人利用であればWindowsやMacでもDocker Desktopを自由に使えますが、上記の条件に合致する企業で業務利用する場合には注意が必要です。
ちなみに、この料金はDocker Desktopが対象です。
LinuxにDockerをインストールして利用する分には料金は発生しません。
5
5.Dockerをインストールしてみよう
それでは、実際にDocker Desktopをインストールしてみましょう。
Docker DesktopはOSやインストーラも提供されていますが、コマンド経由で簡単にインストールできます。
今回は、コマンドを利用して簡単にインストールする方法を紹介します。
なお、前述の通りDocker Desktopは完全無料のソフトウェアではありません。業務で利用する場合にはライセンス違反とならないように注意しましょう。
①Windowsの場合
Windows10またはWindows11の最新版を利用しているのであれば、「Windowsパッケージマネージャ」を利用して最新のDocker Desktopをインストールできます。
前提条件
WindowsでDockerを起動する場合には、VT-x(Intel CPUの場合)またはAMD-V(AMD CPUの場合)が有効である必要があります。
仮想環境(WSL2)の有効化
Windows上でDockerを利用する場合、まずはLinuxの仮想機能であるWSL2を有効化する必要があります。
PowerShellを管理者モードで起動し、以下のコマンドを実行しましょう。
wsl --install -d Ubuntu
少し時間がかかるので待ちましょう。
Docker Desktopのインストール
WSLのインストールが完了したら、次はDocker Desktopをインストールします。
winget install docker.dockerdesktop
あとは、自動でインストールが終了します。
Docker Desktopの起動
インストールが完了すれば、デスクトップにアイコンが出るので、ダブルクリックで起動します。

以下のようなメッセージが表示された場合には、一度サインアウトし、再度ログインしましょう。

再度ログインすることで、正常にDockerが起動します。
タスクバーにDockerのアイコンが表示されていればインストールは完了です。

②Macの場合
Mac向けのDocker Desktopは、IntelチップとM1チップでそれぞれ異なるインストーラが提供されています。
公式サイトからもダウンロードできますが、Homebrewを利用すれば自動で判別してインストールされるので、そちらを利用するとよいでしょう。
brew install --cask docker
もしHomebrewを利用していないのであれば、下記のサイトを参考にインストールしてみてください。
Docker Desktopの起動
インストールが完了したら、アプリケーションランチャーにアプリが追加されるのでクリックして起動しましょう。

以下のようなアラートが出るので、「開く」を選択します。

Dockerを利用するためにアクセス権を付与する必要があるので、「OK」を選択してmacOSのユーザーIDとパスワードを入力して認証しましょう。

しばらくすると、Dockerがメニューバーに表示され、以下のように「Docker Desktop is running」と表示されれば起動完了です。

6
6.Dockerの基本的な使い方
さいごに、Dockerの基本的な使い方を紹介します。
WindowsやmacOSに関わらず、同じコマンドを用いて利用できますので、基本的なコマンドをマスターすればどのOS上でも利用できます。
①バージョン確認:versionコマンド
versionは、インストールされているDockerのバージョンを確認するコマンドです。
docker version
②コンテナの確認:psコマンド
Docker上で動作しているコンテナの情報を表示します。
docker ps
また、停止中のコンテナも表示したい場合には、-aをつけます。
docker ps -a
エラーなどで停止したコンテナの情報も表示されるため、有効活用しましょう。
③イメージの確認:imagesコマンド
ローカルに保持しているDockerイメージを表示します。
docker images
④イメージの取得:pullコマンド
Dockerイメージを取得するためには、pullコマンドを利用します。
Docker Hubに存在するイメージであれば、イメージ名を指定するだけで簡単にイメージを取得できます。
docker pull <イメージ名>
たとえば、Tomcatを含むイメージをダウンロード(pull)したい場合、以下のようなコマンドを実行します。
docker pull tomcat
⑤Dockerを実行:runコマンド
Dockerのイメージをもとにコンテナを起動する場合に利用するのが「run」コマンドです。
docker run <イメージ名>
⑥Dockerイメージを作成:buildコマンド
オリジナルのDockerイメージを作成する場合に利用するのが「build」コマンドです。
Dockerfileを作成し、以下のコマンドを実行することでオリジナルのDockerイメージが作成されます。
docker build -t <イメージ名>
⑦その他よく使うコマンド一覧
その他、以下のようなコマンドを覚えておくとよいでしょう。
コマンド名 | 説明 |
start | すでに存在するコンテナを起動します |
stop | 起動しているコンテナを停止します |
logs | コンテナのログを表示します |
rm | 停止しているコンテナを削除します |
cp | Dockerコンテナにファイルをコピー、またはコンテナからファイルをコピーします。 |
まとめ
ここまで、コンテナ型のアプリケーション実行環境のDockerについて紹介しました。Dockerは非常に動きが速く開発環境の構築も簡単なため、ストレスなく開発を進めることができます。複数人で開発を進める時や途中で新しい開発者を追加する時など、イメージを渡すだけで同じ環境を構築できるため、共同作業に適した便利なプラットフォームです。