
--Docker install and execution
--Installed on Windows laptop
--Using WSL (Windows Subsystem for Linux)

<# get the latest image for SQL Server 2022#>
docker pull mcr.microsoft.com/mssql/server:2022-latest 

<# which containers currently exist?#>
docker ps -a

<# remove if needed#>
docker rm boring_kepler

<# let's run a SQL server container from the image we just pulled#>
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=1qaz@WSX3edc" -p 5433:1433 --name sql01 --hostname sql01 -d mcr.microsoft.com/mssql/server:2022-latest

<# read the error log and find me anything that says connection #>
docker exec -t sql01 cat /var/opt/mssql/log/errorlog | findstr connection

<# jump into the FS of the container - notice the user running #>
docker exec -it sql01 "bash"

<# connect via SSMS and create a database #>
<# create database sqlkonf2023 #>
<# inspect via Docker Desktop manager#>

<# let's run another SQL server container from the image we just pulled#>
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=1qaz@WSX3edc" -p 5434:1433 --name sql02 --hostname sql02 -d mcr.microsoft.com/mssql/server:2022-latest

<# stopping the first container #>
docker stop sql01

docker ps -a

<# start again and connect #>
docker start sql01

docker exec -it sql01 /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P 1qaz@WSX3edc

<# stop - cleanup #>
docker stop sql01
docker stop sql02
docker rm sql01
docker rm sql02

docker ps -a


<# let's create and run sql01 again #>
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=1qaz@WSX3edc" -p 5434:1433 --name sql01 --hostname sql01 -d mcr.microsoft.com/mssql/server:2022-latest

<# try finding the sqlkonf2023 db #>
docker exec -it sql01 /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P 1qaz@WSX3edc

<# stop - cleanup #>
docker stop sql01
docker rm sql01

<# Next stage: using volumes to persist data - check the admin tool #>
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=1qaz@WSX3edc" -v SQLDATA01:/var/opt/mssql -p 5433:1433 --name sql01 --hostname sql01 -d mcr.microsoft.com/mssql/server:2022-latest

<# Try running a second container using the same volume and fail miserably: #>
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=1qaz@WSX3edc" -v SQLDATA01:/var/opt/mssql -p 5434:1433 --name sql02 --hostname sql02 -d mcr.microsoft.com/mssql/server:2022-latest

<# stop - cleanup #>
docker stop sql02
docker rm sql02

<# Correct it: #>
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=1qaz@WSX3edc" -v SQLDATA02:/var/opt/mssql -p 5434:1433 --name sql02 --hostname sql02 -d mcr.microsoft.com/mssql/server:2022-latest

<# stop - cleanup #>
docker stop sql02
docker rm sql02

<# stop - cleanup sql01#>
docker stop sql01
docker rm sql01

<# did I lose my data? #>
<# Next stage: using volumes to persist data - check the admin tool #>
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=1qaz@WSX3edc" -v SQLDATA01:/var/opt/mssql -p 5433:1433 --name sql01 --hostname sql01 -d mcr.microsoft.com/mssql/server:2022-latest


