skip to Main Content

I am trying to run a SQL Server container on my mac through Docker.

I ran the following command:

docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=strongpassword" -p 1433:1433 --name sqlservercontainer -d mcr.microsoft.com/mssql/server:2019-latest

But the container is immediately exiting.

The docker logs for the container look like this:

SQL Server 2019 will run as non-root by default.

This container is running as user mssql.

To learn more visit https://go.microsoft.com/fwlink/?linkid=2099216.

SQL Server 2019 will run as non-root by default.

This container is running as user mssql.

To learn more visit https://go.microsoft.com/fwlink/?linkid=2099216.

/opt/mssql/bin/sqlservr: Error: The system directory [/.system] could not be created. File: LinuxDirectory.cpp:420 [Status: 0xC0000022 Access Denied errno = 0xD(13) Permission denied]

/opt/mssql/bin/sqlservr: Error: The system directory [/.system] could not be created. File: LinuxDirectory.cpp:420 [Status: 0xC0000022 Access Denied errno = 0xD(13) Permission denied]

Any idea what needs to be done to solve this?

2

Answers


  1. If you use the sudo command to create a folder outside of your home directory structure for use by Docker then that folder is going to be owned by the root user, e.g.:

    $ sudo mkdir /var/mssql-data
    
    $ ls -la /var/mssql-data
    total 0
    drwxr-xr-x   2 root  wheel    64B 26 May 11:31 ./
    drwxr-xr-x  30 root  wheel   960B 26 May 11:31 ../
    

    When you try to launch an SQL Server container using a volume mapping with that folder the container will fail to start – because the Docker backend process doesn’t have access – and you will see the "system directory could not be created" error message, e.g.:

    $ docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=StrongPassw0rd" -p 1433:1433 -v /var/mssql-data:/var/opt/mssql --name sqlservercontainer -d mcr.microsoft.com/mssql/server:2019-latest
    9d6bf76a91af08329ea07fafb67ae68410d5320d9af9db3b1bcc8387821916da
    
    $ docker logs 9d6bf76a91af08329ea07fafb67ae68410d5320d9af9db3b1bcc8387821916da
    SQL Server 2019 will run as non-root by default.
    This container is running as user mssql.
    To learn more visit https://go.microsoft.com/fwlink/?linkid=2099216.
    /opt/mssql/bin/sqlservr: Error: The system directory [/.system] could not be created. File: LinuxDirectory.cpp:420 [Status: 0xC0000022 Access Denied errno = 0xD(13) Permission denied]
    

    To correct the situation you need to give your own account access to the folder and then a container using that volume mapping will start successfully:

    $ sudo chown $USER /var/mssql-data
    
    $ docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=StrongPassw0rd" -p 1433:1433 -v /var/mssql-data:/var/opt/mssql --name sqlservercontainer -d mcr.microsoft.com/mssql/server:2019-latest
    3b6634f234024e07af253e69f23971ab3303b3cb6b7bc286463e196dae4de82e
    
    Login or Signup to reply.
  2. If you are having this issue with docker on Synology, SSH into your Synology and update the permissions to your mounted folder.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search