First off, i’ve got zero experience with Docker, so i just started googling around to find out what i had to do. To get things running, i started off with Windows 10 pro and a basic understanding of Powershell.
To install Docker, i went to the Docker download site, got the installer and ran it. After a reboot, Docker was up. But doing quite nothing 🙂
To show it was alive, my first command!
Ok, it’s alive! But what if you want to know more. Well, you kan use this:
I won’t post the screenshot but suffice to say it prints out a lot of info about your Docker system.
On the Docker tutorial site there’s a neat hello world script you can try out. It checks a number of things, like your internet connection and if you’re lucky it all runs and you get a challenge:
docker run hello-world
You can run the Ubuntu image but i was interested in something else: i wanted a SQL Server container!
Before i got to do that, i had to setup some Linux things on my machine. Because most commands invoke the Bash shell, i had to make sure it would work. First of all i enabled the linux feature on my machine:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
And, another restart! After that i selected the Ubuntu distro from the Windows Store, installed that as well and made sure i could connect to it.
Onwards to SQL! You can find a fine tutorial on the Microsoft site on how to install and run SQL Server. For my first run i went with some basic, yes the horrible ones, settings.
First of all you need to pull the image. I went for the latest 2017, but you can get the 2019 preview as well.
docker pull mcr.microsoft.com/mssql/server:2017-latest
This command ran for about 2 minutes and it was done. Nice start! Now, to start the container. You need to set a few variables to get it running:
docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=[YourStr0ngPa$$w0rd]" ` -p 11433:1433 --name sql1 ` -d mcr.microsoft.com/mssql/server:2017-latest
If you did this correctly, the system will start. Keen readers will see that there are two different ports in the script. Port 11433 and 1433. The latter one is the default port, the first one is custom one. Because my machine already hosts a SQL 2017 instance, i had to reroute the traffic to the container.
Now you should be able to connect to the container. The command Microsoft suggests is this:
docker exec -it sql1 "bash"
This should launch your bash shell and give you access to your container. But for me, nothing happened. At all. The powershell command just stops there. I haven’t figured out what is wrong.
If you want to use the command line, you can use the Kitematic extension from Docker. This will give you the possibility to connect to your container and run start the SQLCMD utility.
The above # is all you will get from the exec. To start the slqcmd you need the following command:
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P '<YourNewStrong!Passw0rd>'
If this works, you’ll get the next screen:
Now, let’s check the version of my SQL Instance:
Now, i’ve grown up in the GUI era, so i’d like to connect with SSMS. To do that, i use the following connection info:
After entering my password i can connect. Remember the weird portnumber i used for my container? This is why that port number is usefull. So when i check the version of the SQL Instance i’m connected to, i get to do and see this: