In my previous post I attempted to explain my new interest in Docker and running data-centric applications in container. Starting here I will show how to install SQL Server for Linux on Azure IaaS in container.
Lets start by creating Linux VM in Azure that will run Docker for us. I dont want to spend all of the time and space going through steps in portal or PowerShell since I already went through these in this post, Good video titorial can also be found here .
Assuming you successfully created Linux VM and can login like this:
Next thing we will install Docker on that VM. We will get latest and greatest version of Docker from Docker repository.
First, add the GPG key for the official Docker repository to the system:
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
Add the Docker repository to APT sources:
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
Next, update the package database with the Docker packages from the newly added repo:
$ sudo apt-get update
- Make sure you are about to install from the Docker repo instead of the default Ubuntu 16.04 repo:
apt-cache policy docker-ce
You should see following output:
docker-ce: Installed: (none) Candidate: 17.03.1~ce-0~ubuntu-xenial Version table: 17.03.1~ce-0~ubuntu-xenial 500 500 https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages 17.03.0~ce-0~ubuntu-xenial 500 500 https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
Notice that docker-ce is not installed, but the candidate for installation is from the Docker repository for Ubuntu 16.04. The docker-ce version number might be different.
- Finally install Docker
$ sudo apt-get install -y docker-ce
- Make sure its installed and running
$ sudo systemctl status docker
Output should be similar to below showing that daemon is started and running
Next we need to pull latest SQL Server Docker image:
$ sudo docker pull microsoft/mssql-server-linux
Once the image is pulled and extracted you should see similar output
Now lets run container image with Docker:
$ sudo docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>' -e 'MSSQL_PID=Developer' --cap-add SYS_PTRACE -p 1401:1433 -d microsoft/mssql-server-linux
Now we are running Docker container with SQL Server 2017 in Azure. We should be able to list our containers like:
$ sudo docker ps -a
And see output like:
Connect to SQL Server in the container.
The following steps use the SQL Server command-line tool, sqlcmd, inside the container to connect to SQL Server. First lets connect to bash inside the container using docker exec command. Note I am providing container id here as parameter fetched from previous output of ps command
$ sudo docker exec -it d95734b7f9ba "bash"
Now lets connect via sqlcmd here
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P '<YourStrong!Passw0rd>'
Now lets make simplest query:
SELECT @@version GO
You should see output like:
Now you can go ahead and start creating databases, tables, moving data, etc.
For more see – https://docs.microsoft.com/en-us/sql/linux/quickstart-install-connect-docker, https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-configure-docker. SQL Server images on Docker Hub – https://hub.docker.com/r/microsoft/mssql-server-linux/, https://mathaywardhill.com/2017/05/08/how-to-attach-a-sql-server-database-in-a-linux-docker-container/
Hope this helps.