実践記事

DockerとKubernetes入門|コンテナ技術でインフラを自在に操る

5分で読めます
Tech Study Work編集部
DockerKubernetesインフラコンテナ
DockerとKubernetes入門|コンテナ技術でインフラを自在に操る

Dockerとは何か:コンテナの基本概念

Dockerはアプリケーションとその実行環境を「コンテナ」という単位でパッケージ化するツールです。「自分のMacでは動くのに本番サーバーでは動かない」という問題を解消し、開発・ステージング・本番環境の差異をなくせます。コンテナはVMより軽量で起動が速く、1台のサーバーで多数のコンテナを効率よく動かせます。2025年現在、Dockerはバックエンドエンジニアの必須スキルとなっています。

従来の仮想マシン(VM)との比較:VMはOSごと仮想化するため起動に数分かかりますが、Dockerコンテナはプロセス起動と同等の数秒で立ち上がります。DockerHubには公式イメージが10万件以上公開されており、nginxやPostgreSQLなど主要ソフトウェアをワンコマンドで起動できます。

  • 環境の再現性:Dockerfileによりどの環境でも同一の実行環境を再現、「動かない」問題を根絶
  • 軽量・高速:VMと比べてメモリ使用量が70〜80%削減、起動時間は数秒
  • DockerHub活用:10万件以上の公式・コミュニティイメージから即座に環境構築が可能
  • CI/CDとの親和性:GitHub ActionsなどのCI/CDパイプラインでDockerを使うと環境依存の問題がゼロに

Docker基本コマンドと使い方

最初に覚えるDockerコマンドは「docker pull(イメージ取得)」「docker run(コンテナ起動)」「docker ps(コンテナ一覧)」「docker stop(停止)」「docker build(イメージビルド)」「docker-compose up(複数コンテナ起動)」の6つです。Dockerfileにアプリの実行手順を記述し、docker buildでイメージを作り、docker runで起動するのが基本フローです。実際にnginxやPostgreSQLコンテナを起動して感覚を掴みましょう。

Dockerfileの書き方のポイント:FROMで基底イメージを指定、COPYでソースコードをコピー、RUNで依存パッケージをインストール、CMDでコンテナ起動時のコマンドを定義します。マルチステージビルドを使うと本番イメージのサイズを大幅に削減できます(Node.jsアプリで1GB→100MB程度)。

  • docker run:-p 8080:80でポートマッピング、-v でボリュームマウント、-e で環境変数を指定
  • docker build:-t でイメージ名とタグを指定、--no-cacheでキャッシュ無効化ビルド
  • マルチステージビルド:ビルド用とランタイム用を分けることで本番イメージを軽量化

この記事を読んでいるあなたへ

具体的なサービス選びで迷っているなら、編集部が厳選した比較記事もご参考ください。

AIツールを比較する →

docker-composeで複数サービスを管理する

実際のWebアプリ開発では「フロントエンド+バックエンドAPI+データベース」など複数のサービスを連携させる必要があります。docker-compose.ymlに各サービスの設定を記述すると、docker-compose upの1コマンドで全サービスを一括起動できます。ローカル開発環境のdocker-compose化は開発チームへのオンボーディングを大幅に短縮できるため、チーム開発での評価も高まります。

docker-compose.ymlの構成例:servicesセクションにapp(Node.js)・db(PostgreSQL)・cache(Redis)を定義し、networksで各サービスを接続します。volumesを使うとデータベースのデータをコンテナ削除後も永続化できます。.envファイルとの組み合わせで環境変数の管理も容易になります。

  • サービス連携:複数コンテナをdependsで起動順序を制御し、networksで安全に通信
  • データ永続化:named volumeでDBデータをコンテナライフサイクルから独立して管理
  • オンボーディング短縮:docker-compose up一発で環境構築、新メンバーの環境セットアップが数分で完了

Kubernetesの役割とDockerとの違い

Dockerは単一サーバー上のコンテナ管理が得意ですが、数十〜数百台のサーバーにコンテナをスケールさせるには限界があります。Kubernetes(k8s)は複数サーバー上のコンテナを自動管理するオーケストレーションツールで、「自動スケーリング」「障害時の自動再起動」「ローリングデプロイ」「ロードバランシング」を実現します。大規模サービスの本番運用ではほぼ必須の技術です。

Kubernetesの採用状況:2025年時点で従業員1,000人以上のIT企業の約70%がKubernetesを本番運用で使用しています(CNCF調査)。エンジニアの採用面接でk8sの経験を問われるケースが急増しており、DevOps・SREポジションでは特に重視されます。

  • 自動スケーリング(HPA):CPUやメモリ使用率に応じてPod数を自動調整、トラフィック急増に対応
  • セルフヒーリング:クラッシュしたPodを自動再起動、ノード障害時は別ノードにPodを移動
  • ローリングデプロイ:ダウンタイムなしでアプリを更新、問題発生時はロールバックも自動化

Kubernetes主要リソースの理解

Kubernetesを理解するためのキーコンセプトは「Pod(コンテナの最小単位)」「Deployment(Podの管理・スケーリング)」「Service(Podへのネットワークアクセス)」「Ingress(外部からのトラフィックルーティング)」「ConfigMap/Secret(設定・機密情報の管理)」です。minikubeを使うとローカルでKubernetes環境を構築でき、実際にkubectlコマンドを触りながら学習できます。

コンテナ技術のキャリアへの活かし方

Docker/Kubernetesのスキルはインフラエンジニア・SREへの転職やキャリアアップに直結します。AWSのECS/EKS、Google CloudのGKE、AzureのAKSなどクラウド各社のマネージドKubernetesサービスと組み合わせるとさらに価値が上がります。Docker/k8sの実践経験をGitHubで公開されたdocker-compose.ymlやHelmチャートで示せると採用評価が大きく向上します。

関連する比較記事

この記事に関連するサービス比較をチェック

インフラ・クラウド技術を体系的に学ぶ

Docker/Kubernetesを含むインフラカリキュラムのスクールやサービスを比較しましょう。

学習サービスを比較する

よくある質問

この記事をシェアする