Dockerは、アプリケーションを「コンテナ」という小さな箱に入れて、どこでも同じように動かせるようにするソフトウェアです。開発の現場だけでなく、クラウドやAIの基盤など、今のインフラの多くで使われています。
ここでは、Dockerとは何かを、コンテナの仕組みと仮想マシンとの違いから解説します。基本の用語やよく使うコマンドに加えて、インフラの現場での使われ方と学び方もまとめました。
この記事で分かること
- Dockerとは何か、コンテナと仮想マシンの違い
- イメージ・コンテナ・Dockerfileなどの基本の用語と、よく使うコマンド
- インフラの現場でのDockerの使われ方と、学び方
Dockerとは?
コンテナを作って動かすソフトウェア
Dockerは、Docker社が開発した、コンテナを作り、動かし、配るためのソフトウェアです。2013年に公開されてから、コンテナの技術を広めるきっかけになりました。
コンテナとは、アプリケーションと、その動作に必要なライブラリや設定をひとまとめにした実行環境のことです。コンテナに入れておけば、開発者のパソコンでも、テストのサーバーでも、本番のクラウドでも、同じように動かせます。
コンテナと仮想マシンの違い
コンテナとよく比べられるのが、VirtualBoxやVMwareなどで作る仮想マシンです。
| 項目 | コンテナ | 仮想マシン |
|---|---|---|
| 仕組み | ホストのOSのカーネルを共有し、アプリの実行環境だけを分ける | 仮想のハードウェアの上で、OSを丸ごと動かす |
| 起動の速さ | 数秒以内 | 数十秒〜数分 |
| 大きさ | 数十MB〜数百MBが多い | 数GB以上が多い |
| 1台のサーバーで動かせる数 | 多い | 少ない |
| 分離の強さ | 仮想マシンより弱い | 強い |
コンテナは、OSを丸ごと持たないため、軽くて速く、たくさん動かせるのが特長です。一方で、ホストのカーネルを共有するため、分離の強さは仮想マシンにおよびません。
仮想マシンの仕組みは、[Linuxのインストール方法]で紹介しています。
Dockerを使うメリット
| メリット | 内容 |
|---|---|
| 環境の違いで動かない問題を防げる | 「自分のパソコンでは動いたのに、サーバーでは動かない」を防げる |
| 環境をすぐに作れる | コマンド1つで、データベースやWebサーバーの環境を立ち上げられる |
| 同じ環境を何度でも作れる | 設定を書いたファイルから、同じコンテナを何度でも作り直せる |
| サーバーを効率よく使える | 1台のサーバーで、たくさんのコンテナを動かせる |
インフラエンジニアにとっては、手順書を見ながら1台ずつ構築していた作業を、ファイルとコマンドで再現できるようになるのが大きな変化です。
Dockerの仕組みと基本の用語
4つの基本の用語
| 用語 | 意味 | たとえると |
|---|---|---|
| イメージ | コンテナのもとになる、アプリと環境をまとめたテンプレート | 設計図 |
| コンテナ | イメージから作って、実際に動かしている実行環境 | 設計図から作った実物 |
| Dockerfile | イメージの作り方を書いたテキストのファイル | 設計図の作り方の手順書 |
| レジストリ | イメージを保存して、共有する場所(Docker Hubなど) | 設計図の置き場所 |
1つのイメージから、同じ中身のコンテナをいくつでも作れるのがポイントです。
Dockerが動く流れ
Dockerは、次の流れで使います。
| 流れ | やること | 主なコマンド |
|---|---|---|
| 1. イメージを作る | Dockerfileをもとに、イメージを作る | docker build |
| 2. イメージを共有する | レジストリにイメージを送る | docker push |
| 3. イメージを取り寄せる | 別のサーバーで、レジストリからイメージを取り寄せる | docker pull |
| 4. コンテナを動かす | イメージからコンテナを作って動かす | docker run |
自分でイメージを作らなくても、Docker Hubなどで公開されている公式のイメージを取り寄せて、すぐに動かすこともできます。
よく使うコマンド
| コマンド | できること |
|---|---|
| docker run | イメージからコンテナを作って動かす |
| docker ps | 動いているコンテナの一覧を表示する |
| docker images | 手元にあるイメージの一覧を表示する |
| docker stop | 動いているコンテナを止める |
| docker logs | コンテナのログを表示する |
| docker exec | 動いているコンテナの中でコマンドを実行する |
たとえば、docker run -d -p 8080:80 nginx と入力すると、Webサーバーのnginxのコンテナが立ち上がり、ブラウザで表示できるようになります。Linuxのコマンドに慣れていると、Dockerのコマンドもすぐに使いこなせます。
Linuxのコマンドは、[Linuxのコマンドとは]で紹介しています。
複数のコンテナをまとめて動かすDocker Compose
実際のシステムは、Webサーバー、アプリ、データベースなど、複数のコンテナを組み合わせて動かすことがほとんどです。Docker Composeを使うと、複数のコンテナの構成を1つのファイル(compose.yaml)に書き、docker compose up のコマンド1つでまとめて立ち上げられます。
インフラの現場でのDockerの使われ方
開発から本番まで、同じ環境で動かす
| 場面 | 使われ方 |
|---|---|
| 開発 | 開発者のパソコンに、本番と同じ構成の環境をすぐに用意する |
| テストと公開(CI/CD) | コードの変更のたびにイメージを作り、自動でテストして本番に反映する |
| 本番の運用 | コンテナの数を増やしたり減らしたりして、負荷に合わせて動かす |
| AIの基盤 | 学習や推論の環境をコンテナにまとめ、GPUのサーバーで動かす |
AIの基盤でのコンテナの使われ方は[AIインフラとは]で、開発者が使いやすい基盤づくりは[プラットフォームエンジニアリングとは]で紹介しています。
本番ではKubernetesと組み合わせる
本番の環境では、たくさんのサーバーの上で、たくさんのコンテナを動かします。どのサーバーでどのコンテナを動かすか、止まったコンテナをどう立ち上げ直すかを、自動で管理する必要があります。
このコンテナの管理(オーケストレーション)を担うのがKubernetesです。Dockerはコンテナを作って動かす道具、Kubernetesはたくさんのコンテナをまとめて管理する仕組み、と考えると分かりやすくなります。
インフラエンジニアに求められること
コンテナは、Linuxのカーネルの機能(プロセスを分ける名前空間や、資源を制限するcgroupsなど)を使って動いています。そのため、Linuxやネットワークの知識がある人ほど、コンテナの仕組みを深く理解できます。
| 求められる力 | 内容 |
|---|---|
| Linuxの知識 | コンテナが動く土台の仕組みと、トラブルの原因を探る力 |
| ネットワークの知識 | コンテナどうしや外部との通信の設計 |
| 自動化の知識 | イメージの作成や公開を、CI/CDで自動にする力 |
| セキュリティの知識 | イメージの脆弱性の確認や、権限を絞った動かし方 |
コンテナの技術は、LinuCレベル3のプラットフォームスペシャリストの出題範囲にも入っています。
詳しくは、[LinuCレベル3とは]で紹介しています。
Dockerの学び方
| ステップ | やること |
|---|---|
| 1. Linuxの基本を押さえる | 基本のコマンドとファイルの操作に慣れておく |
| 2. Dockerを入れて動かす | 公式のイメージを取り寄せて、nginxなどのコンテナを動かしてみる |
| 3. Dockerfileを書く | 簡単なアプリを、自分でイメージにしてみる |
| 4. Docker Composeで組み合わせる | Webサーバーとデータベースを組み合わせて動かしてみる |
まずは公式のイメージを動かして、止めて、消してみるところから始めると、コンテナの手軽さを実感できます。
Linuxそのものについては、[Linuxとは]で解説しています。
Dockerでよくある疑問
DockerとKubernetesは何が違う?
Dockerは、コンテナを作って動かすための道具です。Kubernetesは、たくさんのサーバーの上で、たくさんのコンテナをまとめて管理する仕組みです。小さな環境ならDockerだけで十分ですが、本番の大きなシステムではKubernetesと組み合わせて使うのが一般的です。
Dockerは無料で使える?
Docker本体(Docker Engine)は、オープンソースで無料で使えます。WindowsやMacで使うDocker Desktopは、一定の規模以上の企業での利用に有料のプランが必要です。
条件は変わることがあるため、Docker公式サイトで確認してください。
WindowsやMacでも使える?
使えます。WindowsやMacでは、Docker Desktopを入れると、裏側で小さなLinuxの環境を動かして、その上でコンテナを動かします。コンテナの中身は、基本的にLinuxです。
コンテナがあれば、仮想マシンはいらなくなる?
いらなくなるわけではありません。OSを丸ごと分けたい場合や、強い分離が必要な場合は、今も仮想マシンが使われています。実際には、仮想マシンやクラウドのサーバーの上でコンテナを動かす形が多く、2つは組み合わせて使われています。
Dockerを学ぶのに、Linuxの知識は必要?
あったほうが確実に学びやすくなります。コンテナの中身はLinuxで、コマンドの操作もLinuxとよく似ています。Linuxの基本のコマンドを押さえてからDockerに進むと、つまずきにくくなります。
まとめ
Dockerは、アプリケーションをコンテナにまとめて、どこでも同じように動かせるようにするソフトウェアです。この記事のポイントは次のとおりです。
- Dockerとは
コンテナを作り、動かし、配るためのソフトウェア。環境の違いで動かない問題を防げる。 - 仮想マシンとの違い
コンテナはホストのカーネルを共有するため、軽くて速く、たくさん動かせる。 - 基本の用語
イメージ(設計図)からコンテナ(実物)を作る。作り方はDockerfileに書き、レジストリで共有する。 - 現場での使われ方
開発からCI/CD、本番、AIの基盤まで使われ、本番ではKubernetesと組み合わせる - 学び方
Linuxの基本を押さえ、公式のイメージを動かし、Dockerfileとcomposeへ進む
Dockerは、これからのインフラエンジニアにとって欠かせない技術の1つです。まずは自分のパソコンにDockerを入れて、公式のイメージのコンテナを動かすところから始めてみましょう。

