Docker 1.9.0 以降
ボリューム APIを使用する
docker volume create --name hello
docker run -d -v hello:/container/path/for/volume container_image my_command
これは、新しいボリュームを優先して、データのみのコンテナー パターンを破棄する必要があることを意味します。
実際、ボリューム API は、データ コンテナー パターンを実現するためのより良い方法にすぎません。
Dockerでコンテナーを作成すると-v volume_name:/container/fs/path
、次のことができる名前付きボリュームが自動的に作成されます。
- を通じてリストされる
docker volume ls
- を通じて識別される
docker volume inspect volume_name
- 通常のディレクトリとしてバックアップ
--volumes-from
接続を介して以前と同様にバックアップ
新しいボリューム API には、ダングリング ボリュームを特定できる便利なコマンドが追加されています。
docker volume ls -f dangling=true
そして、その名前でそれを削除します:
docker volume rm <volume name>
@mpugach がコメントで下線を引いているように、素敵なワンライナーでぶら下がっているすべてのボリュームを取り除くことができます。
docker volume rm $(docker volume ls -f dangling=true -q)
# Or using 1.13.x
docker volume prune
Docker 1.8.x 以下
本番環境に最も適していると思われるアプローチは、データのみのコンテナーを使用することです。
データのみのコンテナーはベアボーン イメージで実行され、実際にはデータ ボリュームを公開する以外には何もしません。
次に、他のコンテナを実行して、データ コンテナ ボリュームにアクセスできます。
docker run --volumes-from data-container some-other-container command-to-execute
- ここでは、さまざまなコンテナーを配置する方法をよく理解できます。
- ここでは、ボリュームがどのように機能するかについての良い洞察があります。
このブログ投稿には、ボリューム パターンとしてのいわゆるコンテナの適切な説明があり、データのみのコンテナを持つことの要点を明確にしています。
Docker のドキュメントには、コンテナーの明確な説明がボリューム/秒パターンとして含まれるようになりました。
以下は、Docker 1.8.x 以下のバックアップ/復元手順です。
バックアップ:
sudo docker run --rm --volumes-from DATA -v $(pwd):/backup busybox tar cvf /backup/backup.tar /data
- --rm: 終了時にコンテナを削除します
- --volumes-from DATA: DATA コンテナーによって共有されるボリュームに接続します
- -v $(pwd):/backup: 現在のディレクトリをコンテナーにバインド マウントします。tarファイルを書き込む
- busybox: 小さくシンプルなイメージ - 迅速なメンテナンスに適しています
- tar cvf /backup/backup.tar /data: /data ディレクトリ内のすべてのファイルの圧縮されていない tar ファイルを作成します
戻す:
# Create a new data container
$ sudo docker run -v /data -name DATA2 busybox true
# untar the backup files into the new container᾿s data volume
$ sudo docker run --rm --volumes-from DATA2 -v $(pwd):/backup busybox tar xvf /backup/backup.tar
data/
data/sven.txt
# Compare to the original container
$ sudo docker run --rm --volumes-from DATA -v `pwd`:/backup busybox ls /data
sven.txt
これは、コンテナとデータ コンテナに同じイメージを使用することがなぜ良いのかを説明している優れた Brian Goff の素晴らしい記事です。