2016-04-05 1 views
1

にモンゴドッカーコンテナを復元するために、私ははどのようにMacの

docker rm myMongoDB 

私のmongoコンテナを削除私はすべてのデータを失うか、または私はそれを復元することができますか?もしそうなら、どうですか?

私はExited (2) 8 seconds agoを、それが実行されず、その状態が言う画像

docker run -p 27017:27017 -d mongo --name myMongo2 

から別の容器を実行してみてください。

+1

あなたのコンテナは 'volume'を使用する場合は、可能性の高いデータは、あなたのマシン上でまだ使用可能です。 http://stackoverflow.com/questions/26009619/how-to-retrieve-volume-from-a-removed-docker-containerを参照してください。何かがうまくいかない場合に備えて、何かをする前にフォルダをバックアップしてください。 –

+0

@warmoverflow私はstackoverflowのエントリを見ていましたが、 '/ var/lib/docker'ディレクトリはありません。前回のmongodbを使用して以来、またはLinuxではなくMacであることから、私がEl Capitanにアップグレードしたためかどうかはわかりません。 – Ferenc

+1

@thaJeztahは良い答えを提供しました。Mac OS Xを使用しているので、Docker Toolboxを使用しています。 '/ var/lib/docker'フォルダは' docker-machine ssh default 'を使ってログインできるdocker toolbox vmの中にあります。 –

答えて

5

Docker Hub(https://hub.docker.com/_/mongo/)の公式mongoでは、データを格納するための2つのボリュームが定義されています(in the Dockerfile)。コンテナの実行時に明示的に-v/--volumeオプションを指定しなかった場合、ドッカーはこれらの匿名(無名の)ボリュームを作成し、それらのボリュームはまだ前後になることがあります。名前がないため、最後にどのボリュームがコンテナで使用されたかを見つけるのは少し難しいかもしれません。

はまだドッキングウィンドウのホスト上に存在するすべてのボリュームを表示するには、使用しています。

docker volume ls 

これはあなたにこのようなものを与えるはずです。

DRIVER    VOLUME NAME 
local    9142c58ad5ac6d6e40ccd84096605f5393bf44ab7b5fe51edfa23cd1f8e13e4b 
local    4ac8e34c11ac7955b9b79af10c113b870edd0869889d1005ee17e98e7c6c05f1 
local    da0b4a7a00c4b60c492599dabe1dbc501113ae4b2dd1811527384a5dc26cab13 
local    81a40483ae00d72dcfa2117b3ae40f3fe79038544253e60b85a8d0efc8f3d139 

ボリューム内の内容を確認するには、一時的なコンテナに添付して、そこにあるものを確認できます。例えば;ボリューム81a40483ae00d72dcfa2117b3ae40f3fe79038544253e60b85a8d0efc8f3d139と、新しいUbuntuの容器にインタラクティブシェルを開始する

docker run -it -v 81a40483ae00d72dcfa2117b3ae40f3fe79038544253e60b85a8d0efc8f3d139:/volume-data ubuntu 

は、容器内部/volume-data/に取り付けられています。

あなたは、そのディレクトリに移動し、それはあなたが探しているボリュームだかどうかを確認することができます:あなたは(Dockerfileによると、モンゴの画像は2を使用しています)どのボリューム識別一度

[email protected]:/# cd /volume-data/ 
[email protected]:/volume-data# ls -la 

、あなたは新しいmongoコンテナを起動し、それらのボリュームをマウントすることができます。

docker run -d --name mymongo \ 
    -v 4ac8e34c11ac7955b9b79af10c113b870edd0869889d1005ee17e98e7c6c05f1:/data/db/ \ 
    -v da0b4a7a00c4b60c492599dabe1dbc501113ae4b2dd1811527384a5dc26cab13:/data/configdb/ \ 
    mongo 

私は本当にあなたがあなたのデータを失うことを防止するためにドッカーハブ上のmongo画像のドキュメントでWhere to Store Dataセクションを読むことをお勧め。私はまた、あなたの最後のコマンドが後の画像名を--name myMongo2を置くことに注意

NOTE

の前に、mongo(イメージ名)にする必要があります。またmyMongo2は無効なコンテナ名です。大文字を使用できないためです。

+0

「データの保存場所」セクションにはOS X用の警告があり、データディレクトリをホストにマップしてMongoDBコンテナを実行することはできません。知っておいてよかった!とにかく、私のデータは '/ data/...'ディレクトリ(-ies)になければなりません。しかし、私は '/ data /'ディレクトリを持っていません。私が最近OS Xをエルキャピタンにアップグレードしたとき、それは一掃されただろうか? – Ferenc

+0

また、Dockerに 'docker volume ls'コマンドがありません。 'docker: 'volume'はドッカーのコマンドではありません。' 'volume'が新しいコマンドの場合は、Docker 1.8.1を使用しています。 – Ferenc

+1

Dockerの古いバージョンを実行しているようです。ドッカーツールボックスの最新バージョンはhttps://github.com/docker/toolbox/releasesにあります。ホストディレクトリのマッピングに関する多くの問題を解決するhttps://blog.docker.com/2016/03/docker-for-mac-windows-beta/に興味があります – thaJeztah

関連する問題