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.