2

Docker で実行する基本的な MariaDB インスタンスをセットアップしました。基本的には、Kitematic UI を使用してコンテナーを起動し、設定を変更して実行します。

今日はバックアップを取りたくて、Kitematic を使ってマシンからアクセスできるようにポートを変更し、自動バックアップを作成しました。Kitematic でポートを変更した後、新しい MariaDB コンテナーが開始されたようです (つまり、すべてのデータが削除されたようです)。

それは期待される動作ですか?さらに重要なことに、一見欠落しているデータを回復する方法はありますか、それとも完全に削除されていますか?

また、データが実際に削除された場合、すべての変更を失わずに、公開されたポートなどの設定を変更するための推奨される方法は何ですか? docker commit?

ノート:

  • OS X用のdocker 1.12.0ベータ版を実行しています
  • docker -ps a元のデータベースが数日間稼働していたときに、データベースのステータスが「Up for X minutes」と表示される

前もって感謝します!

アップデート:

(ボリュームなどを作成せずに) データを保持するための推奨される手順は次のとおりです。

  1. 変更をコミットします (例: docker commit <containerid> <name/tag>)
  2. コンテナをオフラインにする
  3. 公開ポートなどの設定を更新する
  4. 変更をコミットしてイメージを実行する

...この回答から取得。

4

2 に答える 2

1

はい、これは予期された動作です。データを永続化したい場合は、ホストから (--volumeのオプションを介してdocker run) または別のコンテナーからボリュームをマウントし、データベース ファイルをこのボリュームに保存する必要があります。

docker run --volume /path/on/your/host/machine:/var/lib/mysql mariadb

変更を失うことは、実際にはコンテナーのコア機能であるため、省略できません。このようにしてdocker run、変更することなく新鮮な環境を得ることができます。変更を永続的にしたい場合Dockerfileは、コンテナー自体ではなく、イメージの で行う必要があります。

詳細については、公式ドキュメントhttps://docs.docker.com/engine/tutorials/dockervolumes/を参照してください。

于 2016-08-13T19:03:28.363 に答える
0

コンテナボリュームを特定のパスにマウントしていないようです。ボリュームとコンテナーへのデータの保存については、こちらを参照してください。

ボリュームオプションでコンテナを実行する必要があります

$ docker run --name some-mariadb -v /my/own/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mariadb:tag

/my/own/datadirホストマシン上のディレクトリはどこですか

于 2016-08-13T19:06:48.397 に答える