【ITニュース解説】🚀 Day 8 of My DevOps Journey: Docker Networking & Volumes
2025年09月08日に「Dev.to」が公開したITニュース「🚀 Day 8 of My DevOps Journey: Docker Networking & Volumes」について初心者にもわかりやすいように丁寧に解説しています。
ITニュース概要
Dockerのネットワークとボリュームについて解説。ネットワークはコンテナ間の通信を可能にし、ボリュームはコンテナ削除後もデータを保持する。ネットワークにはBridge、Host、Overlayの3種類がある。ボリュームにはNamed、Host Mounts、Anonymousの3種類がある。これらはDevOpsで信頼性の高いシステムを構築するために重要。
ITニュース解説
Dockerは、コンテナと呼ばれる軽量な仮想環境を作成・実行するためのプラットフォームだ。コンテナはアプリケーションとその依存関係をまとめてパッケージ化し、異なる環境でも一貫して動作させることができる。この記事では、Dockerにおけるネットワークとボリュームという、コンテナをより実用的にするための重要な2つの概念について解説する。
まず、Dockerネットワークについて説明する。Dockerネットワークは、コンテナ同士やコンテナと外部の世界との通信を可能にする。デフォルトでは、ブリッジネットワークというものが使われる。これは、コンテナにプライベートIPアドレスを割り当て、同じネットワーク内のコンテナ同士が通信できるようにするものだ。
ブリッジネットワーク以外にも、ホストネットワークとオーバーレイネットワークというものがある。ホストネットワークは、コンテナがホストOSのネットワークインターフェースを直接共有する。つまり、コンテナはホストOSと同じIPアドレスとポートを使用する。オーバーレイネットワークは、複数のホストにまたがるコンテナを接続するために使用される。これは、Docker SwarmやKubernetesのようなコンテナオーケストレーションツールでよく使われる。
記事では、カスタムブリッジネットワークの作成と、そのネットワーク内でコンテナを実行する例が示されている。docker network create mynetというコマンドでmynetという名前のネットワークを作成し、docker runコマンドでwebという名前のNginxコンテナと、alpineという名前のAlpine Linuxコンテナを同じネットワークに参加させている。そして、alpineコンテナからping webを実行することで、コンテナ同士がネットワークを通じて通信できることを確認している。
次に、Dockerボリュームについて説明する。Dockerボリュームは、コンテナのライフサイクルとは独立してデータを保存するための仕組みだ。コンテナを削除しても、ボリュームに保存されたデータは保持される。これは、データベース、ログファイル、設定ファイルなど、永続化する必要があるデータを扱う場合に非常に重要となる。
Dockerボリュームには、名前付きボリューム、ホストマウント、匿名ボリュームという3つの種類がある。名前付きボリュームは、Dockerによって管理され、名前で識別される。ホストマウントは、ホストOS上のディレクトリをコンテナにマウントする。匿名ボリュームは、名前を持たず、コンテナの削除時に自動的に削除される。
記事では、名前付きボリュームの作成と、MySQLコンテナでそのボリュームを使用する例が示されている。docker volume create mydataというコマンドでmydataという名前のボリュームを作成し、docker runコマンドでMySQLコンテナを実行する際に、-v mydata:/var/lib/mysqlというオプションを指定している。これにより、MySQLのデータベースファイルがmydataボリュームに保存され、コンテナを削除してもデータが失われることはない。
Dockerネットワークとボリュームは、DevOpsの現場で様々な用途に活用できる。データベースコンテナのデータを永続化したり、バックエンドとフロントエンドのコンテナをネットワークで接続したり、設定ファイルを複数のサービス間で安全に共有したりすることが可能だ。
記事では、Dockerネットワークとボリュームを使用する際のプロのヒントも紹介されている。移植性を高めるために、ホストパスの代わりに名前付きボリュームを使用すること、docker network lsやdocker network inspect mynetコマンドでネットワークを検査すること、docker volume pruneやdocker network pruneコマンドで未使用のボリュームやネットワークをクリーンアップすることなどが挙げられている。
最後に、記事では簡単なハンズオンミニラボが提供されている。devnetという名前のネットワークを作成し、NginxコンテナとRedisコンテナを同じネットワークに参加させ、NginxコンテナからRedisコンテナにpingを実行して接続を確認する。これにより、コンテナ同士がネットワークを通じて通信できることを実際に体験できる。
まとめとして、Dockerネットワークはコンテナ同士をミニインターネットのように接続し、Dockerボリュームはコンテナの再起動や削除を超えてデータを保持する。これらを組み合わせることで、Dockerは本番環境でも利用できる信頼性の高いプラットフォームとなる。