Docker チュートリアル

Docker はオープンソースのアプリケーションコンテナエンジンです。これはGo 言語に基づいており、Apache2.0 プロトコルに従ってオープンソース化されています。

Docker を使用すると、開発者はアプリケーションと依存パッケージを軽量でポータブルなコンテナにパッケージ化し、あらゆる一般的な Linux マシンに公開できます。また、仮想化も実現できます。

コンテナは完全にサンドボックスメカニズムを使用しており、相互にインターフェースはありません(iPhone のアプリに似ています)。さらに重要なのは、コンテナのパフォーマンスオーバーヘッドが非常に低いことです。

Docker はバージョン 17.03 以降、CE(Community Edition: コミュニティ版)と EE(Enterprise Edition: エンタープライズ版)に分かれています。コミュニティ版で十分です。


このチュートリアルは誰向けですか?

本チュートリアルは、運用保守エンジニアやバックエンド開発者向けです。このチュートリアルを通じて、Docker の使い方を段階的に学ぶことができます。


本チュートリアルを読む前に必要な知識

本チュートリアルを読む前に、Linux の一般的なコマンドを習得する必要があります。当サイトのLinux チュートリアルで関連するコマンドを学習できます。


Docker の応用シーン

  • マイクロサービスアーキテクチャ:各サービスを独立してコンテナ化し、管理と拡張を容易にします。

  • CI/CD パイプライン:Jenkins / GitLab CI と統合し、自動ビルドとテストを実現します。

  • 開発環境の標準化:新しいメンバーはワンクリックで一連の依存サービス(データベース、メッセージキューなど)を起動できます。

  • クラウドネイティブ基盤:Kubernetes などのオーケストレーションツールは Docker に基づいてコンテナクラスターを管理します。


核となる利点

  • クロスプラットフォームの一貫性:「私のマシンでは動く」という問題を解決し、開発・テスト・本番環境の一貫性を確保します。
  • リソース効率:コンテナはホストのカーネルを直接共有し、OS 全体を仮想化する必要がないため、メモリと CPU を節約できます。
  • 高速デプロイ:コンテナを秒単位で起動でき、自動スケーリングをサポートします。
  • 分離性:各コンテナは独立したファイルシステム、ネットワーク、プロセス空間を持ちます。

核となる概念

  • コンテナ(Container):軽量な実行インスタンスであり、アプリケーションコード、ランタイム環境、依存ライブラリを含みます。イメージに基づいて作成され、他のコンテナと分離され、ホスト OS のカーネルを共有します(仮想マシンより効率的)。
  • イメージ(Image):読み取り専用のテンプレートであり、コンテナの実行環境(OS、ソフトウェア設定など)を定義します。レイヤーストレージ(Layer)により、スペースとビルド速度を最適化します。
  • Dockerfile:テキストファイルであり、イメージを自動的に構築する方法を記述します(例:ベースイメージの指定、ソフトウェアのインストール、ファイルのコピーなど)。
  • レジストリ(Registry):イメージを保存・配布するプラットフォームです。Docker Hub(公式のパブリックレジストリ)やプライベートレジストリ(Harbor など)があります。

基本コマンド

実例

# イメージをプル(例:公式 Nginx イメージ)
docker pull nginx

# コンテナを実行(-d バックグラウンド実行、-p ポートマッピング)
docker run -d -p 80:80 nginx

# 実行中のコンテナを表示
docker ps

# イメージを構築(現在のディレクトリの Dockerfile に基づく)
docker build -t my-app .

# コンテナ内部に入る
docker exec -it <コンテナ ID> /bin/bash

関連リンク

Docker 公式サイト:https://www.docker.com

Github Docker ソースコード:https://github.com/docker

その他の拡張