https://github.com/lesca/docker/tree/main/az-pwsh
10K+
This is an all-in-one docker image includes Azure PowerShell, Graph Powershell SDK, Azure CLI, Bicep CLI, .Net runtime, etc. The image is updated weekly to keep everything up-to-date.
The docker images are published in Docker Hub.
You can simply pull the image by:
docker pull lesca/az-pwsh:latest
and run the image by:
docker run --rm -it lesca/az-pwsh:latest pwsh
Or, you can run the image in detach mode:
docker run -d --name azure lesca/az-pwsh:latest sleep infinity
docker exec -it azure pwsh
Also, you can mount a folder in detached mode:
docker run -d \
--mount type=bind,source="$(pwd)/scripts",target=/root/scripts \
--name azure lesca/az-pwsh:latest \
sleep infinity
docker exec -it azure pwsh
You can then connect to the running container from VS code -> Dev Containers: Attach to Running Container...
You can also simplify the process by adding a .devcontianer.json file in your project folder:
{
"name": "az-pwsh",
"image": "lesca/az-pwsh:dev",
"workspaceFolder": "/root/azure",
"workspaceMount": "source=${localWorkspaceFolder},target=/root/azure,type=bind,consistency=cached",
"customizations": {
"vscode": {
"extensions": [
"ms-vscode.powershell",
"ms-vscode.azurecli",
"ms-azuretools.vscode-bicep"
],
"settings": {
"http.proxy": "http://host.docker.internal:8080",
"http.proxyStrictSSL": false
}
}
}
}
Then, you can open the folder with Dev Containers: Open Folder in Container... command.
The image is based on Azure Powershell.
For windows, you can also use MSI package to install everything, however you need to manually maintain other moudles. Let's say the Graph moudles, the update is very time-wasting.
The workflow always uses official images from Microsoft. No 3rd party images are used.
You can find the images from the registry below:
The base image:
The tags used:
This is installed by the tdnf the package mananger of AzureLinux 3.0 distribution.
You can also install it from Github - https://github.com/Azure/azure-cli/releases
This is installed by an installation script from Microsoft.
The installation source is from Github releases: https://github.com/Azure/bicep/releases
Resources:
The workflow always uses official PowerShell modules from Microsoft. No 3rd party modules are used.
To get a full list of installed modules, you can list the available modules by Get-InstalledModule and Get-Module -ListAvailable
You can use below script to load PFX certs in to My cert store:
function Import-PfxToCertStore {
param (
[string]$pfx,
[string]$pass
)
# import the PFX to your machines cert store
$StoreName = [System.Security.Cryptography.X509Certificates.StoreName]::My
$StoreLocation = [System.Security.Cryptography.X509Certificates.StoreLocation]::CurrentUser
$Store = [System.Security.Cryptography.X509Certificates.X509Store]::new($StoreName, $StoreLocation)
$Flag = [System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::Exportable
$Certificate = [System.Security.Cryptography.X509Certificates.X509Certificate2]::new($pfx, $pass, $Flag)
$Store.Open([System.Security.Cryptography.X509Certificates.OpenFlags]::ReadWrite)
$Store.Add($Certificate)
$Store.Close()
}
For AzCLI you need to convert pfx to pem before you can connect:
openssl pkcs12 -in $pfxPath --out $pemPath --nodes
az login --service-principal -u $clientId --certificate $pemPath --tenant $tenantId
Note: pem is not encrypted. Permenantly delete it after you finish your work.
In some cases, you may want to install a newer version of PowerShell. Since we are using AzureLinux 3.0, it's using rpm packages, we can refer to the installation guide from RHEL.
First, you can visit the Azure PowerShell release page and find the package link.
Then, use dnf install -y following the link, e.g:
dnf install -y https://github.com/PowerShell/PowerShell/releases/download/v7.5.3/powershell-7.5.3-1.cm.aarch64.rpm
Content type
Image
Digest
sha256:fd34685bc…
Size
752.9 MB
Last updated
about 2 months ago
docker pull lesca/az-pwsh