MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Docker:ubah folder tempat menyimpan volume buruh pelabuhan

Volume bernama akan disimpan di dalam folder buruh pelabuhan (/var/lib/docker). Jika Anda ingin membuat volume di folder host tertentu, gunakan volume host dengan sintaks berikut:

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

Atau dari file penulisan Anda:

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"

Dengan volume host, konten apa pun dari volume di dalam gambar akan dilapis dengan konten yang tepat dari folder host, termasuk UID folder host. Folder host kosong tidak diinisialisasi dari gambar seperti volume bernama kosong. Pemetaan UID cenderung menjadi bagian tersulit dalam menggunakan volume host.

Sunting:dari komentar di bawah, jika Anda memerlukan volume bernama yang bertindak sebagai volume Host, ada plugin volume persisten lokal yang terdaftar di daftar plugin buruh pelabuhan. Setelah menginstal plugin, Anda dapat membuat volume yang mengarah ke folder host, dengan fitur bahwa bahkan setelah menghapus volume bernama, direktori host tertinggal. Contoh penggunaan dari plugin meliputi:

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

Mereka juga menyertakan file penulisan v2 dengan contoh volume berikut:

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

Satu opsi tambahan yang telah saya ketahui dalam sebulan terakhir adalah menggunakan opsi pemasangan driver volume lokal untuk membuat pengikatan secara manual. Ini mirip dengan volume host di buruh pelabuhan dengan perbedaan berikut:

  • Jika direktori tidak ada, mencoba memulai wadah dengan volume bernama yang menunjuk ke pengikatan akan gagal. Dengan volume host, buruh pelabuhan akan menginisialisasi ke direktori kosong yang dimiliki oleh root.
  • Jika direktori kosong, volume bernama akan menginisialisasi pengikatan dengan konten gambar di lokasi pemasangan, termasuk kepemilikan/izin file dan direktori. Dengan volume host, tidak ada inisialisasi konten direktori host.

Untuk membuat volume bernama sebagai bind mount, Anda dapat membuatnya terlebih dahulu dengan:

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

Dari docker run perintah, ini dapat dilakukan dengan --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

Atau dalam file penulisan, Anda dapat membuat volume bernama dengan:

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

Preferensi saya adalah menggunakan volume bernama dengan driver lokal daripada driver pihak ketiga yang bertahan lokal jika Anda memerlukan fitur volume bernama.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $count Operator Agregasi

  2. Pemantauan MongoDB Proaktif (Sudut Pengembang Studio/Penasihat)

  3. Pengaturan mongodb bidang unik

  4. MongoCollection versus DBCollection java

  5. DynamoDB vs MongoDB NoSQL