Boot2Docker (on Windows) running Mongo with shared folder (This file system is not supported)

后端 未结 3 1644
无人共我
无人共我 2021-01-15 15:27

I am trying to start a Mongo container using shared folders on Windows using Boot2Docker. When starting using run -it -v /c/Users/310145787/Desktop/mongo:/data/db mong

3条回答
  •  挽巷
    挽巷 (楼主)
    2021-01-15 16:12

    Apparently, according to this gist and Sev (sevastos), mongo doesn't support mounted volume through the VirtualBox shared folder:

    See mongoDB Productions Notes:

    MongoDB requires a filesystem that supports fsync() on directories.
    For example, HGFS and Virtual Box’s shared folders do not support this operation.

    the easiest solutions of all and a proper way for data persistance is Data Volumes:

    Assuming you have a container that has VOLUME ["/data"]

    # Create a data volume
    docker create -v /data --name yourData busybox true
    # and use
    docker run --volumes-from yourData ...
    

    This isn't always ideal (but the following is for Mac, by Edward Chu (chuyik)):

    I don't think it's a good solution, because the data just moved to another container right?
    But it still inside the container rather than local system(mac disk).

    I found another solution, that is to use sshfs to map data between boot2docker vm and your mac, which may be better since data is not stored inside linux container.

    Create a directory to store data inside boot2docker:

    boot2docker ssh
    mkdir -p /mnt/sda1/dev
    

    Use sshfs to link boot2docker and mac:

    echo tcuser | sshfs docker@localhost:/mnt/sda1/dev  -p 2022 -o password_stdin
    

    Run image with mongo installed:

     docker run -v /mnt/sda1/dev:/data/db  mongod
    

    The corresponding boot2docker issue points out to docker issue 12590 ( Problem with -v shared folders in 1.6 #12590), which points to the work around of using double-slash.

    using a double slash seems to work. I checked it locally and it works.

    docker run -d -v //c/Users/marco/Desktop/data:/data 
    

    it also works with

    docker run -v /$(pwd):/data
    

提交回复
热议问题