2016-03-15 17 views
18

Do najnowszej wersji Docker (v1.10) uważano, że możemy używać DOC: kontenerów tylko do danych. Tak więc utworzyłbym taki DOC (oparty na np. Busybox) i użyłbym --volumes-from, by połączyć go z moim kontenerem. Nadal możesz przeczytać o tym w Docker documentation.Docker o nazwie volume vs DOC (data-only-containers)

Z nową wersją dockera, mówi się, że zamiast DOC powinniśmy użyć named volumes. Oto przykład z docker-compose.yml:

version: '2'  
services: 
    elasticsearch: 
    image: elasticsearch:2.2.0 
    command: elasticsearch -Des.network.host=0.0.0.0 
    ports: 
     - "9201:9200" 
    volumes: 
     - "es-data:/usr/share/elasticsearch/data" 

volumes:  
    es-data: 

tutaj stworzyliśmy i wykorzystanie nazwie objętość es-data.

Nie ma zbyt wiele dokumentacji na temat tej nowej funkcji. Pytam:

  • Czy możemy zastąpić DOC nazwanymi pojemnikami? Jak długo utrzymuje się wolumen? Co się stanie, jeśli usunę kontener, który z niego korzysta?
  • Jak możemy np. kopia zapasowa teraz? Wcześniej mogłem docker run --rm --volumes-from es-data ..., a następnie tar go.
+2

"Czy możemy zastąpić ..."? - patrz https://github.com/docker/docker/issues/17798#issuecomment-154815207 – amartynov

+2

FYI "na podstawie np. busybox" - jest uważany za błędny, sprawdź [szaleństwo kontenera tylko do danych] (http://container42.com/2014/11/18/data-only-container-madness /) – amartynov

Odpowiedz

15

Czy możemy zastąpić DOC nazwanymi pojemnikami?

W wielu przypadkach tak, nazwane pojemniki będą lepszym rozwiązaniem.

Jak długo utrzymuje się wolumen? Co się stanie, jeśli usunę kontener, który z niego korzysta?

Po zdjęciu pojemnika głośność nadal będzie dostępna. Jedynym sposobem na usunięcie woluminu jest użycie docker-compose down -v lub docker volume rm <volume name>.

Jak możemy np. kopia zapasowa teraz? Wcześniej mogłem uruchamiać w porterze --rm --volumes-from es-data ... a następnie tar.

Zamiast --volumes-from można użyć --volume=<volume name>.

Pamiętaj, że wolumeny tworzone przez docker-compose zawsze poprzedzona nazwą projektu, więc jeśli używasz go z poleceniem docker pełna nazwa jest rzeczywiście <project_name>_es-data.

+3

compose obsługuje montowanie woluminów [zewnętrznych] (https://docs.docker.com/compose/compose-file/#external), bez prefiksu w tym przypadku – amartynov

+0

Chciałbym zobaczyć przykład tego. – Cezar

+0

Ale w tym przypadku compose nie utworzy wolumenu, musi już istnieć. –