dockerdocker-volume

SQLServer Container looses Data when stopped although it is mounted to volume


please bear in mind this is my first time posting here I might not know all the rules and stuff.

so I have just started working with dockers and images. I created a small .Net app and I used MsSQLServer docker image in my app. The app gets connected with the server and I am able to create database using CodeFirst approach (add-migration and update database works fine).

i am running my SQL container with -rm mode. Although it has a volume mounted to it but i have to create database every time i rerun the container. I read that if we want our data not to get lost when we delete the container we have to mount volumes to our container. i had done the same thing using MongoDb docker image and it worked fine. my data is still present even when i stop and rerun my MongoContainer. but my MSSQL is unable to retain data. here is the command i m using to run my docker image ( i know about docker-compose but i am avoiding using it for now)

docker run -d --rm --name mssqlserver -p 1433:1433 -e "ACCEPT_EULA=Y" -e MSSQL_SA_PASSWORD=********** -v sqlData:/data/db  mcr.microsoft.com/mssql/server

Note: this says it will not delete named volume with --rm https://docs.docker.com/engine/reference/run/#clean-up---rm


Solution

  • The path you mount the volume on is a Linux path, so you need to use forward slashes rather than back-slashes, like this

    docker run -d --rm --name mssqlserver -p 1433:1433 -e "ACCEPT_EULA=Y" -e MSSQL_SA_PASSWORD=********** -v sqlData:/var/opt/mssql mcr.microsoft.com/mssql/server