Private/Wissen/X_Technology/X72_Docker.ps1

<#
 
# Docker
 
Docker mit PowerShell managen.
 
- **Hashtags** Docker
- **Version** 2020.01.13
 
#>


#region Docker installieren & konfigurieren

# ! 1. Docker installieren
Set-Location -Path C:\Temp
Invoke-WebRequest -UseBasicParsing -Uri 'https://download.docker.com/win/stable/Docker%20Desktop%20Installer.exe' -OutFile ".\Docker Desktop Installer.exe"
Start-Process -FilePath '.\Docker Desktop Installer.exe' -Wait
Install-Module -Name DockerMsftProvider -SkipPublisherCheck -Force

# ! 2. Docker starten
Set-Location $env:ProgramFiles\Docker
Start-Process -FilePath ".\Docker\Docker Desktop.exe"

# ! 3. Zu Linux-Container wechseln
.\docker\DockerCli.exe -SwitchLinuxEngine

#endregion

#region SQL Server Container

# ! 4. SQL Server 2019-Image installieren
docker pull "mcr.microsoft.com/mssql/server:2019-latest"

# ! 5. sql2019-Container erstellen
docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=P@ssw0rd" -p1433:1433 --name sql2019 -h sql2019 -d mcr.microsoft.com/mssql/server:2019-latest

# ! 6. sql2019-Container starten
docker start sql2019

# ! 7. Übungs-/Test-DB einrichten
Set-Location -Path C:\Temp
Invoke-WebRequest -OutFile ".\WideWorldImporters-Full.backup" -Uri "https://github.com/Microsoft/sql-server-samples/releases/download/wide-world-importers-v1.0/WideWorldImporters-Full.bak"
Invoke-WebRequest -OutFile ".\AdventureWorks2016.backup" -Uri "https://github.com/Microsoft/sql-server-samples/releases/download/adventureworks/AdventureWorks2016.bak"

docker exec -it sql2019 mkdir /var/opt/mssql/backup
docker cp .\WideWorldImporters-Full.backup sql2019:/var/opt/mssql/backup
docker cp .\AdventureWorks2016.backup sql2019:/var/opt/mssql/backup
Install-Module -Name SqlServer -Scope CurrentUser -AllowClobber -SkipPublisherCheck -AcceptLicense
Import-Module -Name SqlServer -Verbose -Force

Invoke-Sqlcmd -ServerInstance localhost -Username sa -Password "P@ssw0rd" -Database master -Query @"
RESTORE DATABASE [WideWorldImporters] FROM DISK = N'/var/opt/mssql/backup/WideWorldImporters-Full.backup'
    WITH FILE = 1
      , MOVE N'WWI_Primary' TO N'/var/opt/mssql/data/WideWorldImporters.mdf'
      , MOVE N'WWI_UserData' TO N'/var/opt/mssql/data/WideWorldImporters_UserData.ndf'
      , MOVE N'WWI_Log' TO N'/var/opt/mssql/data/WideWorldImporters.ldf'
      , MOVE N'WWI_InMemory_Data_1' TO N'/var/opt/mssql/data/WideWorldImporters_InMemory_Data_1'
"@

Invoke-Sqlcmd -ServerInstance localhost -Username sa -Password "P@ssw0rd" -Database master -Query @"
RESTORE DATABASE [AdventureWorks2016] FROM DISK = N'/var/opt/mssql/backup/AdventureWorks2016.backup'
    WITH FILE = 1
      , MOVE N'AdventureWorks2016_Data' TO N'/var/opt/mssql/data/AdventureWorks2016_Data.mdf'
      , MOVE N'AdventureWorks2016_Log' TO N'/var/opt/mssql/data/AdventureWorks2016_Log.ldf'
"@


# ! 8. SQL Server 2019-Container stoppen
docker stop sql2019
docker ps

# ! 9. Container löschen
docker rm sql2019

# ! 10. Images löschen
docker rmi mcr.microsoft.com/mssql/server:2019-latest

#endregion