Microsoft SQL Server as a Docker Container

Nobody could have ever imagined Microsoft SQL Server running on Linux. I appreciate the foresight of Satya Nadella, CEO Microsoft embracing Linux and OpenSource.

Now as Microsoft SQL Server vNext CTP 1.1 is available for Ubuntu, RHEL7 & CentOS7, how about running it as a container.

To run SQL Server vNext CTP 1.1, you need Minimum of 4 GB of RAM on your host.

Pulling Image

Use Docker pull command to pull the image from docker hub.

~# docker pull swapnillinux/mssql

Creating Container

  • run - create & start container
  • --name - name the container as mymssql
  • -p 1433:1433 - forward port 1433 from your host to 1433 of container
  • -d - Run container in background using Docker image swapnillinux/mssql
~# docker run --name=mymssql -p 1433:1433 -d swapnillinux/mssql

Check Status using docker ps command

~# docker ps
CONTAINER ID        IMAGE                COMMAND                  CREATED             STATUS              PORTS                    NAMES  
ec4b65b5d6ec        swapnillinux/mssql   "/opt/mssql/bin/sqlse"   22 seconds ago      Up 21 seconds>1433/tcp   mymssql  

Check some logs of your container using docker logs command

~# docker logs mymssql
This is an evaluation version.  There are [174] days left in the evaluation period.  
2016-12-21 12:56:24.72 Server      Microsoft SQL Server vNext (CTP1.1) - (X64)  
    Dec 10 2016 02:51:11 
    Copyright (C) 2016 Microsoft Corporation. All rights reserved.
    on Linux (CentOS Linux 7 (Core))
2016-12-21 12:56:27.26 spid6s      Polybase feature disabled.  
2016-12-21 12:56:27.26 spid6s      Clearing tempdb database.  
2016-12-21 12:56:27.85 spid6s      Starting up database 'tempdb'.  
2016-12-21 12:56:28.14 spid6s      The tempdb database has 1 data file(s).  
2016-12-21 12:56:28.15 spid20s     The Service Broker endpoint is in disabled or stopped state.  
2016-12-21 12:56:28.16 spid20s     The Database Mirroring endpoint is in disabled or stopped state.  
2016-12-21 12:56:28.18 spid20s     Service Broker manager has started.  
2016-12-21 12:56:28.26 spid5s      Recovery is complete. This is an informational message only. No user action is required.  

Looks like its up and running.

Now Test it

Use SQL Server tools on Linux to connect to MSSQL server.

on RHEL or CentOS

~# wget -O /etc/yum.repos.d/msprod.repo

~# yum install mssql-tools

on Ubuntu

~# curl | sudo apt-key add -

~# wget -O /etc/apt/sources.list.d/msprod.list

~# apt-get update 
~# apt-get install mssql-tools

Query SQL Server

This Docker Image was created with SA password as 'RedHat123'. You can change it later on.

[root@centos ~]# sqlcmd -S localhost -U SA -P 'RedHat123'
1> SELECT Name from sys.Databases;  
2> GO  

(4 rows affected)

Create Database

2> GO  

Use Database test

1> USE test;  
2> GO  
Changed database context to 'test'.  

Create Table

1> CREATE TABLE student (id INT, name NVARCHAR(50), rollno INT);  
2> GO  

Insert Some Data

1> INSERT INTO student VALUES (1, 'joey', 1123);  
2> INSERT INTO student VALUES (2, 'phoebe', 1154);  
3> GO

(1 rows affected)

(1 rows affected)

Finally get it back

1> SELECT * FROM student;  
2> GO  
id          name                                               rollno  
----------- -------------------------------------------------- -----------
          1 joey                                                      1123
          2 phoebe                                                    1154

(2 rows affected)

Other tools that run on Windows to connect to this SQL Server Docker container:

  • SQL Server Management Studio (SSMS)
  • Windows PowerShell
  • SQL Server Data Tools (SSDT)

Thats it for now, Enjoy :)

Like it? Click here to Tweet your feedback

Swapnil Jain

RHCA Level IX, RHCI ♦ Solution Architect ♦ DevOps Trainer & Consultant