MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Docker:zmień folder, w którym mają być przechowywane woluminy Docker

Nazwane woluminy będą przechowywane w folderze Docker (/var/lib/docker). Jeśli chcesz utworzyć wolumin w określonym folderze hosta, użyj woluminu hosta o następującej składni:

docker run -v /home/ubuntu/data/app-data:/app-data my-image

Lub z pliku do tworzenia:

Wersja
version: '2'
services:
    mongo:
        container_name: "CaseBook-db"
        restart: always
        image: mongo:3.2.7
        ports:
            - "27017"
        volumes:
            - /home/ubuntu/data/db:/data/db
        labels:
            - "ENVIRONMENT_TYPE=meteor"

    app:
        container_name: "CaseBook-app"
        restart: always
        image: "meteor/casebook"
        build: .
        depends_on:
            - mongo
        environment:
            - MONGO_URL=mongodb://mongo:27017/CaseBook
        ports:
            - "80:3000"
        volumes:
            - /home/ubuntu/data/uploads:/Meteor-CaseBook-Container/.uploads
        labels:
            - "ENVIRONMENT_TYPE=meteor"

W przypadku woluminów hosta dowolna zawartość woluminu wewnątrz obrazu zostanie nałożona na dokładną zawartość folderu hosta, w tym identyfikatory UID folderu hosta. Pusty folder hosta nie jest inicjowany z obrazu tak, jak pusty nazwany wolumin. Mapowanie UID wydaje się być najtrudniejszą częścią korzystania z woluminu hosta.

Edycja:z poniższych komentarzy, jeśli potrzebujesz nazwanego woluminu, który działa jako wolumin hosta, istnieje wtyczka lokalnego woluminu utrwalania, która jest wymieniona na liście wtyczek platformy Docker. Po zainstalowaniu wtyczki możesz tworzyć woluminy wskazujące foldery hosta, z tą funkcją, że nawet po usunięciu nazwanego woluminu, katalog hosta pozostaje w tyle. Przykładowe użycie wtyczki obejmuje:

docker volume create -d local-persist -o mountpoint=/data/images --name=images
docker run -d -v images:/path/to/images/on/one/ one
docker run -d -v images:/path/to/images/on/two/ two

Zawierają również plik tworzenia v2 z następującym przykładem woluminu:

volumes:
  data:
    driver: local-persist
    driver_opts:
      mountpoint: /data/local-persist/data

Jedną z dodatkowych opcji, o której zostałem poinformowany w zeszłym miesiącu, jest użycie opcji montowania lokalnego sterownika woluminu, aby ręcznie utworzyć montowanie typu bind. Jest to podobne do woluminu hosta w oknie dokowanym z następującymi różnicami:

  • Jeśli katalog nie istnieje, próba uruchomienia kontenera z nazwanym woluminem wskazującym na montowanie z wiązaniem zakończy się niepowodzeniem. W przypadku woluminów hosta docker zainicjuje go w pustym katalogu, którego właścicielem jest root.
  • Jeśli katalog jest pusty, nazwany wolumin zainicjuje montowanie powiązania z zawartością obrazu w lokalizacji montowania, w tym właścicielem/uprawnieniami do pliku i katalogu. W przypadku woluminu hosta nie ma inicjalizacji zawartości katalogu hosta.

Aby utworzyć nazwany wolumin jako montowany powiązanie, możesz go wcześniej utworzyć za pomocą:

docker volume create --driver local \
  --opt type=none \
  --opt device=/home/user/test \
  --opt o=bind \
  test_vol

Z docker run polecenie, można to zrobić za pomocą --mount :

docker run -it --rm \
    --mount type=volume,dst=/container/path,volume-driver=local,volume-opt=type=none,volume-opt=o=bind,volume-opt=device=/home/user/test \
    foo

Lub w pliku redagowania możesz utworzyć nazwany wolumin za pomocą:

volumes:
  data:
    driver: local
    driver_opts:
      type: none
      o: bind 
      device: /home/user/test 

Wolałbym używać nazwanego woluminu z lokalnym sterownikiem zamiast lokalnego sterownika innej firmy, jeśli potrzebujesz funkcji nazwanego woluminu.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak korzystać z MongoDB Stitch w aplikacjach na Androida

  2. Nie udało się uruchomić aplikacji (port 8080) niedostępny

  3. Kiedy używać CouchDB przez MongoDB i na odwrót?

  4. Jak mogę przechowywać porę dnia w MongoDB? Jako ciąg? Podaj dowolny rok/miesiąc/dzień?

  5. Instalowanie klienta/sterownika PHP 7 MongoDB?