Docker 1.9.0以降
ボリュームAPIを使用する
docker volume create --name hello
docker run -d -v hello:/container/path/for/volume container_image my_command
つまり、データのみのコンテナーパターンは、新しいボリュームのために破棄する必要があります。
実際、ボリュームAPIは、データコンテナーのパターンを実現するためのより良い方法にすぎません。
-v volume_name:/container/fs/path
Dockerでコンテナを作成すると、次のことができる名前付きボリュームが自動的に作成されます。
- を通じてリストされる
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
コンテナとデータコンテナに同じ画像を使用するのが良い理由を説明する、優れたブライアンゴフのすばらしい記事を次に示します。