Dockerにおけるコンテナのエクスポートとインポートは、状態の移行、バックアップ、復元に広く利用される機能です。本記事では、これらの操作を詳細に解説します。
コンテナのエクスポート
コンテナのエクスポートとは、現時点のコンテナのファイルシステム内容を単一のアーカイブファイルに出力する処理です。ただし、環境変数やネットワーク設定などの構成情報やメタデータは含まれません。この操作には主に docker export コマンドを使用します。
手順
- コンテナの停止(推奨): エクスポート中にデータ変更が発生するのを防ぐため、実行中のコンテナを事前に停止します。
docker stop <container_name_or_id>
- エクスポートの実行:
docker exportでコンテナをtarアーカイブとして出力します。
docker export -o <output_tar_file.tar> <container_name_or_id>
パイプを使った直接出力も可能です。
docker export <container_name_or_id> > <output_tar_file.tar>
注意点
- 出力されるtarファイルにはファイルシステムの内容のみが含まれ、コンテナの構成設定やメタデータは保存されません。
- 完全なコンテナ環境(設定や依存サービスを含む)を移行する場合は、
docker save/docker loadによるイメージの保存・復元、あるいはDocker Composeを利用したマルチコンテナアプリケーションの構成記述が適しています。
コンテナのインポート
コンテナのインポートは、エクスポートされたtarファイル(スナップショット)をDockerの新しいイメージとして取り込む処理です。こちらは主に docker import コマンドを使用します。
手順
tarファイルを新しいイメージとしてインポートし、任意のリポジトリ名とタグを付与します。
docker import <input_tar_file.tar> <repository>:<tag>
具体例:
docker import redis-backup.tar myredis:latest
注意点
- インポートされたtarファイルは新規イメージとして作成されるため、直接コンテナとして復元されるわけではありません。
- 新しいイメージからコンテナを起動するには、別途
docker runを実行する必要があります。
まとめ
コンテナのエクスポートとインポートは、Dockerにおける柔軟なデータ移行およびバックアップ機構です。エクスポートによりコンテナのファイルシステム状態をファイル化し、異なる環境間での移動やバックアップが容易になります。一方、インポートによりスナップショットから迅速にイメージを生成し、状態の復元や新しいイメージの作成が可能です。ただし、エクスポート対象には構成情報やメタデータが含まれない点を理解し、完全な環境移行が必要な場合は、イメージの保存・復元やDocker Composeといった他の手法を併用することが推奨されます。