MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Docker:променете папката, където да съхранявате томовете на docker

Именуваните томове ще се съхраняват в папката на docker (/var/lib/docker). Ако искате да създадете том в конкретна хост папка, използвайте хост том със следния синтаксис:

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

Или от вашия файл за композиране:

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"

При томовете на хост всяко съдържание на тома в изображението ще бъде насложено с точното съдържание на хост папката, включително UID на хост папката. Празна хост папка не се инициализира от изображението, както е празен именуван том. UID съпоставянията обикновено са най-трудната част от използването на том на хост.

Редактиране:от коментарите по-долу, ако имате нужда от именуван том, който действа като хост том, има локален плъгин за постоянен обем, който е посочен в списъка с плъгини на docker. След като инсталирате приставката, можете да създавате томове, които сочат към хост папки, с функцията, че дори след премахване на именувания том, хост директорията остава зад себе си. Примерното използване от приставката включва:

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

Те също така включват файл за композиране v2 със следния пример за том:

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

Една допълнителна опция, за която бях информиран през последния месец, е да използвам опциите за монтиране на драйвера за локален том, за да създам ръчно свързване. Това е подобно на хост обем в docker със следните разлики:

  • Ако директорията не съществува, опитът за стартиране на контейнер с именуван том, сочещ към монтиране на обвързване, ще бъде неуспешен. С хост томове, docker ще го инициализира в празна директория, собственост на root.
  • Ако директорията е празна, именуван том ще инициализира свързването на свързване със съдържанието на изображението на мястото за монтиране, включително собствеността/разрешенията на файл и директория. При том на хост няма инициализация на съдържанието на хост директорията.

За да създадете именуван том като свързващ монтиране, можете да го създадете предварително с:

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

От docker run команда, това може да стане с --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

Или във файл за композиране можете да създадете именувания том с:

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

Моето предпочитание би било да използвам наименования том с локалния драйвер вместо локалния драйвер на трета страна, ако имате нужда от функциите на именувания обем.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Агрегация с актуализация в mongoDB

  2. Съвети за управление на конфигурациите на вашата база данни

  3. MongoDb:Разлика между $push/$addtoset

  4. Как да увелича стойност на число в Mongoose?

  5. най-добрата практика на обединяването на django + PyMongo?