2017-03-15 4 views
0

Ich verwende docker-komponieren in einem meiner Projekte. Während der Entwicklung mounte ich mein Quellverzeichnis für eine einfache Entwicklung auf ein Volume in einem meiner Docker-Dienste. Zur gleichen Zeit habe ich einen DB-Dienst (psql), der ein benanntes Volume für persistenten Datenspeicher bereitstellt.docker-komponieren mounted volume bleiben

Ich beginne mit Lösung und alles funktioniert prima

$ docker-compose up -d 

Wenn ich meine Bände prüfe ich den Namen und „unnamed“ (Quell-Laufwerk) zu sehen.

$ docker volume ls 
DRIVER    VOLUME NAME 
local    226ba7af9689c511cb5e6c06ceb36e6c26a75dd9d619360882a1012cdcd25b72 
local    myproject_data 

Das Problem, das ich Erfahrung ist, dass, wenn ich

$ docker-compose down 
... 
$ docker volume ls 
DRIVER    VOLUME NAME 
local    226ba7af9689c511cb5e6c06ceb36e6c26a75dd9d619360882a1012cdcd25b72 
local    myproject_data 

beide Bände bleiben tun. Jedes Mal, wenn ich

$ docker-compose down 
$ docker-compose up -d 

ein neues Volumen für meine Quelle laufen montieren erstellt

$ docker volume ls 
DRIVER    VOLUME NAME 
local    19181286b19c0c3f5b67d7d1f0e3f237c83317816acbdf4223328fdf46046518 
local    226ba7af9689c511cb5e6c06ceb36e6c26a75dd9d619360882a1012cdcd25b72 
local    myproject_data 

Ich weiß, dass dies nicht auf meinem Deployment-Server passieren wird, da es sich nicht um die Quelle montieren, aber gibt es eine Möglichkeit, die montierte Quelle nicht persistent zu machen?

Antwort

0

Sie können die Option --rm im Andocklauf verwenden. Um es zu nutzen mit docker-compose Sie

docker-compose rm -v nach dem Anhalten Ihrer Container mit docker-compose stop

verwenden können, wenn Sie die Dokumentation über Data volumes gehen, seine erwähnt, dass

Datenmengen bestehen, auch wenn der Behälter selbst ist gelöscht.

Das bedeutet also, das Stoppen eines Containers entfernt nicht die von ihm erstellten Volumes, egal ob benannt oder anonym.

Nun, wenn Sie lesen weiter nach unten zu Removing volumes

A Docker Datenvolumen weiterhin bestehen, nachdem ein Container gelöscht. Sie können benannte oder anonyme Volumes erstellen. Benannte Volumes haben ein spezifisches Quellformat außerhalb des Containers, zum Beispiel awesome:/bar. Anonymous Bände haben keine bestimmte Quelle. Wenn der Container gelöscht wird, sollten Sie den Docker Engine-Daemon anweisen, anonyme Volumes zu bereinigen. Verwenden Sie dazu die Option --rm:

$ docker run --rm -v /foo -v awesome:/bar busybox top 

Dieser Befehl erstellt ein anonymen/Foo-Volume. Wenn der Container entfernt wird, entfernt die Docker Engine das Volume/foo, aber nicht das großartige Volume .

+0

Danke für die Antwort. Das hat etwas funktioniert, aber wenn ich "docker-compose rm -v" nach "docker-compose down" nenne, bekomme ich 'No stopped containers'. Ich muss 'docker-compose stop' gefolgt von' docker-compose rm -v' fallen, um meine anonymen Volumes zu entfernen. Nach meinem besten Verständnis ist dies der beste Ansatz. Allerdings wäre es schön mit einer Flagge dafür in 'docker-compose down' zu gehen. Ähnlich dem Flag '--volumes' für benannte Volumes. –