I run the following command on my linux machine, and want to attach a volume, like in Mysql
docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=12345678' -p 1433:1433 -d mcr.microsoft.com/mssql/server:2017-latest
You can attach a volume on the Microsoft SQL Server too, as described on the Microsoft Documentation:
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=12345678' -p 1433:1433 -v <host directory>/data:/var/opt/mssql/data -v <host directory>/log:/var/opt/mssql/log -v <host directory>/secrets:/var/opt/mssql/secrets -d mcr.microsoft.com/mssql/server:2017-latest
Using the above command you mount three folders of the container to a host directory:
<host directory>/data:/var/opt/mssql/data
<host directory>/log:/var/opt/mssql/log
<host directory>/secrets:/var/opt/mssql/secrets
You can also use a data volume container instead of a mounted host directory:
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=12345678' -p 1433:1433 -v sqlvolume:/var/opt/mssql -d mcr.microsoft.com/mssql/server:2017-latest
You can use this as docker-compose.yaml
file:
services:
mssql:
image: mcr.microsoft.com/mssql/server:2022-latest
ports:
- 1433:1433
volumes:
- ./data:/var/opt/mssql/data
- ./log:/var/opt/mssql/log
- ./secrets:/var/opt/mssql/secrets
environment:
- ACCEPT_EULA=Y
- SA_PASSWORD=123456789
Then, to prevent permission denied error create data,log and secrets folder and change their permission:
mkdir data && sudo chown 10001 data
mkdir log && sudo chown 10001 log
mkdir secrets && sudo chown 10001 secrets
And finally, use docker-compose up -d
to start the container.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With