Overview
- Use official images for Microsoft SQL Server on Linux for Docker Engine.
- Run as SQL Express edition.
- Run as standalone server.
Create docker-compose file “.yml” or “.yaml”
- Create a directory to keep docker compose file
mkdir /srv/mssql-server
- Create docker compose file named “docker-compose.yaml”
cd /srv/mssql-server/
cat > docker-compose.yaml <<'EOF'
version: '2'
services:
mssqlserver:
image: mcr.microsoft.com/mssql/server:2019-latest
restart: always
environment:
ACCEPT_EULA: Y
MSSQL_SA_PASSWORD: password#1
MSSQL_PID: Express
ports:
- 1433:1433
volumes:
- ./mssqldb:/var/opt/mssql
EOF
Startup MSSQL with docker-compose
- Due to MSSQL running as non-root user, we need to create a system user and group with ID “10001” as the following:
groupadd --system --gid 10001 mssql
adduser --system --shell /bin/nologin --gid 10001 --uid 10001 mssql
- Create MSSQL DB directory named as in volume mapping “./mssqldb” and owner
cd /srv/mssql-server/
mkdir ./mssqldb
chown mssql:mssql ./mssqldb
- To bring MSSQL container service up, run:
docker-compose up -d
- To shutdown the container service, run:
docker-compose down
- To check MSSQL running port:
docker-compose ps
docker ps

- Finally to allow connection to DB, we also need to open database port “1433” in local firewall
firewall-cmd --permanent --add-port=1433/tcp
firewall-cmd --reload
- To view or debug logs, run:
docker-compose logs -f
Thanks!