About This Page
This page is part of the Azure documentation. It contains code examples and configuration instructions for working with Azure services.
Bias Analysis
Bias Types:
⚠️
powershell_heavy
⚠️
windows_first
⚠️
windows_tools
⚠️
missing_linux_example
Summary:
The documentation exhibits a strong Windows bias. All command-line examples use PowerShell syntax, and all screenshots and sample outputs are from Windows environments (e.g., 'PS C:\WINDOWS\system32>'). Instructions for editing the hosts file, installing certificates, and using Docker are written specifically for Windows, with no equivalent Linux or macOS guidance. There is no mention of Linux shell commands, Linux file paths, or Linux-specific Docker installation steps. The use of Windows-specific tools and patterns (e.g., PowerShell cmdlets, Windows file paths) is pervasive, and Linux users are not provided with parallel instructions.
Recommendations:
- Provide parallel Linux/macOS instructions and examples for all steps, including editing /etc/hosts, installing certificates, and using Docker.
- Include Linux shell (bash) command examples alongside PowerShell, especially for Docker, kubectl, and HTTP API interactions.
- Show sample outputs from Linux terminals (e.g., bash prompt) in addition to Windows PowerShell.
- Document certificate installation steps for Linux (e.g., using update-ca-certificates or similar tools).
- Reference Linux file paths (e.g., /etc/hosts) and explain any OS-specific differences.
- Clarify that the process is cross-platform and explicitly support Linux/macOS users in the prerequisites and throughout the guide.
Create pull request
Flagged Code Snippets
[10.128.44.40]: PS>Set-HcsKubernetesContainerRegistry
Operation completed successfully. Use Get-HcsKubernetesContainerRegistryInfo for credentials
[10.128.44.40]: PS>New-HcsKubernetesNamespace -Namespace myecr
[10.128.44.40]: PS>New-HcsKubernetesUser -UserName ecruser
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUN5RENDQWJDZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXSmwKY201bGRHVnpNQjRYRFRJd01URXdOVEF6TkRJek1Gb1hEVE13TVRFd016QXpOREl6TUZvd0ZURVRNQkVnNjOVRLWndCQ042cm1XQms2eXFwcXI1MUx6bApTaXMyTy91UEJ2YXNSSUUzdzgrbmEwdG1aTERZZ2F6MkQwMm42Q29mUmtyUTR2d1lLTnR1MlpzR3pUdz0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
server: https://compute.dbe-hw6h1t2.microsoftdatabox.com:6443
name: kubernetes
===================CUT=========================================CUT==============
client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUMwRENDQWJpZ0F3SUJBZ0lJYmVWRGJSTzZ3ell3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TURFeE1EVXdNelF5TXpCYUZ3MHlNVEV4TURreU16UTRNal
===================CUT=========================================CUT==============
DMVUvN3lFOG5UU3k3b2VPWitUeHdzCjF1UDByMjhDZ1lCdHdRY0ZpcFh1blN5ak16dTNIYjhveFI2V3VWWmZldFFKNElKWEFXOStVWGhKTFhyQ2x4bUcKWHRtbCt4UU5UTzFjQVNKRVZWVDd6Tjg2ay9kSU43S3JIVkdUdUxlUDd4eGVjV2VRcWJrZEVScUsxN0liTXpiVApmbnNxc0dobEdmLzdmM21kTGtyOENrcWs5TU5aM3MvUVIwRlFCdk94ZVpuUlpTeDVGbUR5S1E9PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo=
[10.128.44.40]: PS>Grant-HcsKubernetesNamespaceAccess -Namespace myecr -UserName ecruser
[10.128.44.40]: PS>kubectl get pods -n "myecr"
No resources found.
PS C:\WINDOWS\system32>
PS C:\Windows\System32> .\kubectl.exe apply -f .\deployment.yml -n myecr
pod/nginx configured
PS C:\Windows\System32> .\kubectl.exe get pods -n myecr
NAME READY STATUS RESTARTS AGE
nginx 1/1 Running 0 27m
PS C:\Windows\System32>
PS C:\WINDOWS\system32> $imageName="nginx"
PS C:\WINDOWS\system32> Invoke-WebRequest -Method Delete -Credential $credential -Uri "https://ecr.dbe-hw6h1t2.microsoftdatabox.com:31001/v2/$imageName/manifests/$digest" | Select-Object -ExpandProperty StatusDescription
[10.128.44.40]: PS> Get-HcsKubernetesContainerRegistryInfo
Endpoint IPAddress Username Password
-------- --------- -------- --------
ecr.dbe-hw6h1t2.microsoftdatabox.com:31001 10.128.44.41 ase-ecr-user i3eTsU4zGYyIgxV
PS C:\WINDOWS\system32> docker login ecr.dbe-hw6h1t2.microsoftdatabox.com:31001 -u ase-ecr-user -p 3bbo2sOtDe8FouD
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Login Succeeded
PS C:\WINDOWS\system32> docker pull mcr.microsoft.com/oss/nginx/nginx:1.17.5-alpine
1.17.5-alpine: Pulling from oss/nginx/nginx
Digest: sha256:5466bbc0a989bd1cd283c0ba86d9c2fc133491ccfaea63160089f47b32ae973b
Status: Image is up to date for mcr.microsoft.com/oss/nginx/nginx:1.17.5-alpine
mcr.microsoft.com/oss/nginx/nginx:1.17.5-alpine
PS C:\WINDOWS\system32> docker tag mcr.microsoft.com/oss/nginx/nginx:1.17.5-alpine ecr.dbe-hw6h1t2.microsoftdatabox.com:31001/nginx:2.0
PS C:\WINDOWS\system32> docker push ecr.dbe-hw6h1t2.microsoftdatabox.com:31001/nginx:2.0
The push refers to repository [ecr.dbe-hw6h1t2.microsoftdatabox.com:31001/nginx]
bba7d2385bc1: Pushed
77cae8ab23bf: Pushed
2.0: digest: sha256:b4c0378c841cd76f0b75bc63454bfc6fe194a5220d4eab0d75963bccdbc327ff size: 739
PS C:\WINDOWS\system32> docker run -it --rm -p 8080:80 ecr.dbe-hw6h1t2.microsoftdatabox.com:31001/nginx:2.0
2020/11/10 00:00:49 [error] 6#6: *1 open() "/usr/share/nginx/html/favicon.ico" failed (2: No such file or directory), client: 172.17.0.1, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "localhost:8080", referrer: "http://localhost:8080/"
172.17.0.1 - - [10/Nov/2020:00:00:49 +0000] "GET /favicon.ico HTTP/1.1" 404 555 "http://localhost:8080/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36" "-"
^C
PS C:\WINDOWS\system32>
PS C:\WINDOWS\system32> .\kubectl.exe get secrets -n myecr
NAME TYPE DATA AGE
ase-ecr-credentials kubernetes.io/dockerconfigjson 1 99m
default-token-c7kww kubernetes.io/service-account-token 3 107m
sec-smbcredentials microsoft.com/smb 2 99m
PS C:\WINDOWS\system32>
PS C:\WINDOWS\system32> $username="ase-ecr-user"
PS C:\WINDOWS\system32> $password="3bbo2sOtDe8FouD"
PS C:\WINDOWS\system32> $securePassword = ConvertTo-SecureString $password -AsPlainText -Force
PS C:\WINDOWS\system32> $credential = New-Object System.Management.Automation.PSCredential ($username, $securePassword)
PS C:\WINDOWS\system32> $tags = Invoke-RestMethod -Credential $credential -Uri "https://ecr.dbe-hw6h1t2.microsoftdatabox.com:31001/v2/nginx/tags/list" | Select-Object -ExpandProperty tags
PS C:\WINDOWS\system32> $tags
2.0
PS C:\WINDOWS\system32> $tags = Invoke-RestMethod -Credential $credential -Uri "https://ecr.dbe-hw6h1t2.microsoftdatabox.com:31001/v2/$imageName/tags/list" | Select-Object -ExpandProperty tags
PS C:\WINDOWS\system32> $tags
2.0
PS C:\WINDOWS\system32>
PS C:\WINDOWS\system32> $response = Invoke-WebRequest -Method Head -Credential $credential -Uri "https://ecr.dbe-hw6h1t2.microsoftdatabox.com:31001/v2/$imageName/manifests/$tags" -Headers @{ 'Accept' = 'application/vnd.docker.distribution.manifest.v2+json' }
PS C:\WINDOWS\system32> $digest = $response.Headers['Docker-Content-Digest']
PS C:\WINDOWS\system32> $digest
sha256:b4c0378c841cd76f0b75bc63454bfc6fe194a5220d4eab0d75963bccdbc327ff
PS C:\WINDOWS\system32>