2017-08-11 6 views
0

Neu für docker und docker-komponieren, haben geschrieben komponieren datei, die paar services startet von denen einer auf mongo-datenbank basiert. Ich habe das Mongo Image vor einiger Zeit heruntergeladen und es mit Daten in einen Container geladen. Wenn ich meine Mongo-Instanz über Docker starte, beginnt Compose mit einem neuen Container, der auf einem leeren Bild basiert, also bekomme die Daten nicht.docker-komponieren mit volume aus bestehenden container

Lesen Sie über Volumes als eine Möglichkeit zu versuchen, zu komponieren, um die Daten aus dem vorhandenen Container zu verwenden und haben jetzt mehrere Permutationen ausprobiert und können es nur nicht finden, um die Daten zu finden.

Wenn ich anfangen, den Behälter mit den Daten und kann prüfen, erhalte ich:

"Mounts": [ 
     { 
      "Type": "volume", 
      "Name": "3f78b88e3e06f31d5f65a45bb1cb964245551875218d065162625cc73e662b1e", 
      "Source": "/var/lib/docker/volumes/3f78b88e3e06f31d5f65a45bb1cb964245551875218d065162625cc73e662b1e/_data", 
      "Destination": "/data/configdb", 
      "Driver": "local", 
      "Mode": "", 
      "RW": true, 
      "Propagation": "" 
     }, 
     { 
      "Type": "volume", 
      "Name": "d3f89470c9f8c53b55c30338f691eb1586600343004c502feffe8f81091d7d5c", 
      "Source": "/var/lib/docker/volumes/d3f89470c9f8c53b55c30338f691eb1586600343004c502feffe8f81091d7d5c/_data", 
      "Destination": "/data/db", 
      "Driver": "local", 
      "Mode": "", 
      "RW": true, 
      "Propagation": "" 
     } 
    ], 

rechts So bin ich in sagen, dass ich irgendwie neuen Container diese Bereitstellungspunkte mit Volumen-Tag erhalten verwenden müssen?

Haben Sie versucht:

volumes: 
    - type: volume 
    source: /var/lib/docker/volumes/3f78b88e3e06f31d5f65a45bb1cb964245551875218d065162625cc73e662b1e/_data 
    target: /data/configdb 
    volume: 
     nocopy: true 

    - type: volume 
    source: /var/lib/docker/volumes/d3f89470c9f8c53b55c30338f691eb1586600343004c502feffe8f81091d7d5c/_data 
    target: /data/db 
    volume: 
     nocopy: true 

und:

volumes: 
    - /data/configdb:/var/lib/docker/volumes/3f78b88e3e06f31d5f65a45bb1cb964245551875218d065162625cc73e662b1e/_data 
    - /data/db:/var/lib/docker/volumes/d3f89470c9f8c53b55c30338f691eb1586600343004c502feffe8f81091d7d5c/_data 

Aber an Strohhalme ehrlich Greifen zu sein, jede mögliche Hilfe in einem Beispiel dafür, was soll ich über die vorhandenen Daten zu verwenden, tun wäre viel geschätzt.

Lawrence

Antwort

0

Angenommen, Sie Compose Dateiformat v3.0 verwenden +, versuchen Sie das zu bind in Volumes Definition type Option ändern. Der Unterschied ist, dass für den volume Typ, sofern angegeben, der source sich auf den Namen des benannten Volumes bezieht. Für bind bezieht sich die source auf den Pfad zu der Datei oder dem Verzeichnis auf dem Docker-Daemon-Host.

Sie können mehr über die verschiedenen Arten von Mount im Docker documentation lesen.

0

Versuchen Sie Folgendes:

  1. Erstellen Sie einen Namen Volumen mit Docker volume create data_storage
  2. starten Mongo mit dem Volumen docker run -d -v data_storage:/data/db --name mongoding mongo
  3. eine Datenbank erstellen und einige Dokumente zu einer Sammlung
  4. Kill the hinzufügen Container und starten Sie einen neuen, um zu sehen, wie es funktioniert.

    Docker Behälter inspizieren 708bf6fe0a5b

    "Mounts": [ 
        { 
         "Type": "volume", 
         "Name": "data_storage", 
         "Source": "/var/lib/docker/volumes/data_storage/_data", 
         "Destination": "/data/db", 
         "Driver": "local", 
         "Mode": "z", 
         "RW": true, 
         "Propagation": "" 
        }, 
    

Read more here

Verwandte Themen