Search code examples
dockerdocker-composedocker-machinedocker-desktop

Docker compose generates anonymous volume rather then existing named volume


In order to keep track of the volumes used, i like to use named volumes. Currently i have one named volume

docker volume ls
DRIVER   VOLUME NAME
local    mongodb

my docker-compose file is something like this:

version: "3"

services: 
  db:
    image: mongo:4.0.6
    container_name: mongo
    ports:
      - 27017:27017
    environment: 
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: macmongoroot
    volumes: 
      - mongodb:/data/db

volumes:
  mongodb:
    external:
      name: mongodb

networks:
  default:
    external:
      name: macbook

everytime i run docker-compose docker-compose up -d docker compose adds a new anonymous volume rather then using the named one :

docker volume ls
DRIVER     VOLUME NAME
local      a4a02fffa9bbbdd11c76359264a5bf24614943c5b1b0070b33a84e51266c58d7
local      mongodb

this docker compose file works fine on my server but on my docker desktop i'm having this issue. currently using Docker Desktop version 2.0.0.3 (31259). Any help would be appreciated thanks


Solution

  • The anonymous volume belongs to /data/configdb which in the Dockerfile instructions

    VOLUME /data/db /data/configdb
    

    By doing docker inspect on the created container you will notice the following:

    "Mounts": [
                {
                    "Type": "volume",
                    "Name": "mongodb",
                    "Source": "/var/lib/docker/volumes/mongodb/_data",
                    "Destination": "/data/db",
                    "Driver": "local",
                    "Mode": "rw",
                    "RW": true,
                    "Propagation": ""
                },
                {
                    "Type": "volume",
                    "Name": "be86274b1f6009eb60b8acb3855f51931c4ccc7df700666555422396688b0dd6",
                    "Source": "/var/lib/docker/volumes/be86274b1f6009eb60b8acb3855f51931c4ccc7df700666555422396688b0dd6/_data",
                    "Destination": "/data/configdb",
                    "Driver": "local",
                    "Mode": "",
                    "RW": true,
                    "Propagation": ""
                }
            ]
    

    Which means that mongodb volume is actually being used for the data as you asked however another volume will be created for this /data/configdb. Also you can verify that the data exist by checking this source path /var/lib/docker/volumes/mongodb/_data where mongodb data will be saved

    $ ls /var/lib/docker/volumes/mongodb/_data                                                                            total 328
    drwxr-xr-x 4  999  999  4096 Mar  8 11:02 .
    drwxr-xr-x 3 root root  4096 Mar  8 10:58 ..
    -rw------- 1  999  999 16384 Mar  8 11:00 collection-0--2358474299739251284.wt
    -rw------- 1  999  999 36864 Mar  8 11:01 collection-2--2358474299739251284.wt
    -rw------- 1  999  999  4096 Mar  8 11:00 collection-4--2358474299739251284.wt
    -rw------- 1  999  999 16384 Mar  8 11:00 collection-7--2358474299739251284.wt
    drwx------ 2  999  999  4096 Mar  8 11:11 diagnostic.data
    -rw------- 1  999  999 16384 Mar  8 11:00 index-1--2358474299739251284.wt
    -rw------- 1  999  999 36864 Mar  8 11:01 index-3--2358474299739251284.wt
    -rw------- 1  999  999  4096 Mar  8 10:58 index-5--2358474299739251284.wt
    -rw------- 1  999  999  4096 Mar  8 11:01 index-6--2358474299739251284.wt
    -rw------- 1  999  999 16384 Mar  8 10:58 index-8--2358474299739251284.wt
    -rw------- 1  999  999 16384 Mar  8 10:58 index-9--2358474299739251284.wt
    drwx------ 2  999  999  4096 Mar  8 11:00 journal
    -rw------- 1  999  999 16384 Mar  8 11:00 _mdb_catalog.wt
    -rw------- 1  999  999     2 Mar  8 11:00 mongod.lock
    -rw------- 1  999  999 36864 Mar  8 11:02 sizeStorer.wt
    -rw------- 1  999  999   114 Mar  8 10:58 storage.bson
    -rw------- 1  999  999    45 Mar  8 10:58 WiredTiger
    -rw------- 1  999  999  4096 Mar  8 11:00 WiredTigerLAS.wt
    -rw------- 1  999  999    21 Mar  8 10:58 WiredTiger.lock
    -rw------- 1  999  999  1065 Mar  8 11:02 WiredTiger.turtle
    -rw------- 1  999  999 69632 Mar  8 11:02 WiredTiger.wt