Giter VIP home page Giter VIP logo

microsoftdocs / virtualization-documentation Goto Github PK

View Code? Open in Web Editor NEW
1.8K 199.0 1.5K 94.78 MB

Place to store our documentation, code samples, etc for public consumption.

Home Page: http://docs.microsoft.com/virtualization/

License: Creative Commons Attribution 4.0 International

PowerShell 90.08% Shell 0.02% C++ 4.31% Dockerfile 2.97% TSQL 0.29% C# 0.50% HTML 1.68% CSS 0.11% JavaScript 0.03%

virtualization-documentation's Introduction

Microsoft Open Source Code of Conduct

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.

Virtualization-Documentation

Content published to Virtualization documentation.

Place to store our documentation, code samples, etc for public consumption and contributions.

Contribute

To contribute, fork the project and submit a pull request! Here's our wishlist.

If you want to submit prospective content but contributing to public documentation takes too much time/planning, submit your idea or draft to the Prospective Docs folder and we'll figure it out from there.

Digging into the repo structure a little:

Virtualization -- Contribute docs here! --

This is a mirrored copy of the documentation available on Virtualization documentation.

The folder structure matched the URL structure for the website.

For example: Say you want to edit the user guide article for working with checkpoints.

Published location: Using checkpoints to revert virtual machines to a previous state

Doc location: virtualization/hyperv_on_windows/user_guide/checkpoints.md

If you add a screen shot or picture, put it in the media folder closest to the article you're contributing to. For the checkpoints user guide, that would be: virtualization/hyperv_on_windows/user_guide/media

Demos

Demos of Hyper-V. These are public scripts from various presentations and conferences.

Everything in here was made to present once. There are many egregious hacks. Don't use any of it in production.

*-samples

Walkthroughs and samples.

*-tools

Scripts to automate Hyper-V/Windows Container things.

Code of Conduct

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.

virtualization-documentation's People

Contributors

alexgrest avatar alvinmorales1 avatar benjaminarmstrong avatar brasmith-ms avatar bucrogers avatar cwatson-cat avatar cwilhit avatar cynthn avatar daschott avatar dhurataj avatar eross-msft avatar heidilohr avatar jasongerend avatar juarezhm avatar kallie-b avatar mamezgeb avatar mattbriggs avatar mebersol avatar melaniehom avatar msarts avatar neilpeterson avatar nepeters007 avatar patricklang avatar robinharwood avatar scooley avatar sethmanheim avatar thecloudtaylor avatar theodthompson avatar v-susbo avatar vrapolinario avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

virtualization-documentation's Issues

Creating virtual switch using ARM Azure VM

We need to provide name of the virtual switch when creating a container:

$container = New-Container -Name "MyContainer" -ContainerImageName WindowsServerCore -SwitchName "Virtual Switch"

When I was creating a classic Azure VM, as in: https://msdn.microsoft.com/virtualization/windowscontainers/quick_start/azure_setup , the virtual switch is created by default

PS C:\Program Files\WindowsPowerShell\modules> get-vmswitch

Name           SwitchType NetAdapterInterfaceDescription
----           ---------- ------------------------------
Virtual Switch NAT

However, when I'm working on Azure VM created using ARM template, Get-VMSwitch does not return anything...
How do I add VM switch to the ARM VM?

New-ContainerHost.ps1 fails if Pscx module is imported

I'm trying to run the New-ContainerHost.ps1 on my Win10 TH2 machine (10586.29) and get an error. I was following the steps on this page: https://msdn.microsoft.com/en-us/virtualization/windowscontainers/quick_start/container_setup, the script New-ContainerHost.ps1 is from this link: https://aka.ms/tp4/New-ContainerHost

cmdlet New-ContainerHost.ps1 at command pipeline position 1
Supply values for the following parameters:
Password: 
VmName: Test
Before installing and using the Windows Server Technical Preview 4 with Containers virtual machine you must:
    1. Review the license terms by navigating to this link: http://aka.ms/tp4/containerseula
    2. Print and retain a copy of the license terms for your records.
By downloading and using the Windows Server Technical Preview 4 with Containers virtual machine you agree to such license terms.
Please confirm you have accepted and agree to the license terms.
[N] No  [Y] Yes  [?] Help (default is "N"): y
Using VHD path C:\Users\Public\Documents\Hyper-V\Virtual Hard Disks
Using external switch Internet
The latest ServerDatacenterCore ISO is already present on this system.
Mounting ISO...
Converting WIM to VHD...

Windows(R) Image to Virtual Hard Disk Converter for Windows(R) 10
Copyright (C) Microsoft Corporation.  All rights reserved.
Version 10.0.10586.0.amd64fre.th2_release.151029-1700

INFO   : Looking for the requested Windows image in the WIM file
INFO   : Image 3 selected (ServerDataCenterCore)...
INFO   : Creating sparse disk...
INFO   : Mounting VHD...
ERROR  : A parameter cannot be found that matches parameter name 'PassThru'.
INFO   : Log folder is C:\Users\oren\AppData\Local\Temp\Convert-WindowsImage\e631d128-4e45-41e0-be9a-e88088d2e817
INFO   : Closing Windows image...
INFO   : Done.
Dismounting ISO...
WARNING: Wrong version of Container OS Image (WIM) inside C:\Users\Public\Documents\Hyper-V\Virtual Hard
Disks\WindowsServerCore-WIM.vhdx...
Creating temporary VHDX for the Containers OS Image WIM...
C:\dev\New-ContainerHost.ps1 : A parameter cannot be found that matches parameter name 'PassThru'.
At line:1 char:1
+ .\New-ContainerHost.ps1
+ ~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Write-Error], WriteErrorException
    + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,New-ContainerHost.ps1

Why can't docker images be managed via Powershell ISE?

It's not clear why Docker commands cannot be managed via Powershell ISE but only in Powershell, while Windows containers can and should be mentioned on https://msdn.microsoft.com/en-us/virtualization/windowscontainers/quick_start/manage_docker.

With "manage" I mean "docker attach" and "Enter-PSSession", attaching to a container session.

I get these errors when trying to attach to a docker container via Powershell ISE: http://snag.gy/EehYI.jpg

Friendly, pronounceable names for Windows Server Containers

It has become a somewhat common practice to provide unique, friendly "names" to containers. It's quite nice when talking about a container in conversation, over the phone, or in code.

One really nice, extensible, secure way of doing so is using the "petname" project [1]. You could easily embed petname in Windows Server Containers!

Petname libraries (and standalone binaries) currently exist in Python [2], Golang [3], and Shell [4] -- all licensed under Apache 2 -- so take your pick!

[1] http://blog.dustinkirkland.com/2015/01/introducing-petname-libraries-for.html
[2] https://github.com/dustinkirkland/python-petname
[3] https://github.com/dustinkirkland/golang-petname
[4] https://github.com/dustinkirkland/petname

Hyper-V nested virtualization on Root OS

Now that nested virtualization is supported for Hyper-V VMs, I was wondering if it'd also be possible to enable it for the Root OS.

This would be very useful for running other virtualization products like VirtualBox and VMware Workstation in the Root OS under Hyper-V (the other way around, Hyper-V nested under VMware Workstation, has been possible for quite some time).

Right now when I try to run a 64-bit VMware Workstation VM under the Hyper-V Root OS (with the vmx.allowNested = TRUE flag), I get the following error:

This virtual machine is configured for 64-bit guest operating systems. However, 64-bit operation is not possible.

This host does not support Intel VT-x.

For more detailed information, see http://vmware.com/info?id=152.

Convert-WindowsImage fail on win10

If Microsoft-Hyper-V-Management-PowerShell is enabled but Microsoft-Hyper-V-Services is disabled. Convert-WindowsImage incorrectly assumes that New-VHD is going to work.

Creating new container image gives The Appx package's manifest is invalid error

Hi, I am trying to make a new container image and it gives the error:

New-ContainerImage : Failed to define container image.
Failed to create container image.
Failed to open container image manifest file.
Failed to define container image.
Failed to create container image: The Appx package's manifest is invalid. (0x80080204).

I'm running on a Windows server 2016 TP4 hosted on local Hyper-V (Windows 10 Pro Insider Preview - Build 14279)

create container image gives catastrophic failure

Hi,

I tried making an elasticsearch image like the minecraft example, everything runs well until creating the image:

[Container Host]:: Create image from container
new-containerimage : Failed to define container image.
Failed to create container image.
Failed to define container image.
Failed to create container image: Catastrophic failure (0x8000FFFF).
At C:\Users\stylelabs\Documents\stylelabs.docker\containers\m-elasticsearch\windows\m-elasticsearch.ps1:44 char:2

  • new-containerimage -Container $buildContainer -Publisher $publish ...
    
  • ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    • CategoryInfo : NotSpecified: (:) [New-ContainerImage], VirtualizationException
    • FullyQualifiedErrorId : OperationFailed,Microsoft.Containers.PowerShell.Cmdlets.NewContainerImage

I'm running on a Windows server 2016 TP3 hosted on azure.
I also tried it with a fresh VM where I only installed git

Hyper-V Container deployment why can't I use this Powershell command PS C:\> Install-ContainerImage -Name WindowsServerCore -Version 10.0.10586.0

Hyper-V Container deployment why can't I use this Powershell command
PS C:> Install-ContainerImage -Name WindowsServerCore -Version 10.0.10586.0
The above command returns nothing .. but this prior command succeeded ..
PS C:> Find-ContainerImage

Name Version Description


NanoServer 10.0.10586.0 Container OS Image of Windows Se...
WindowsServerCore 10.0.10586.0 Container OS Image of Windows Se...

I can install NanoServer in the Hyper-V host container but I cannot do so for WindowsServerCore.
Is this by design or the support is not there yet for WindowsServerCore in Hyper-V Container?
I have an application that needs three Hyper-V containers i.e. one for Web services with IIS7.5 acting as Web server for the App, second container for Application data collection, validation, processing and commit to the DB server, and the third for DB server with MSSQL Enterprise version 2008 or 2012 version.

How do I deploy MSSQL 2012/2016 in the DB Container. Which flavor of server core, Nano or WindowsServer core to deploy for three above mentioned servers and why? When will Microsoft provide a GUI instead of using Powershell commands from using remote host running server manager. Is there GUI experience for remote configurations i.e. configure IIS, MSQL, networking, etc . How do I deploy my app or do I just run the setup in command line or PS in the container which will launch the install gui for my app?

Many thanks in advance for your input.

Does not work on WIM created via New-WindowsImage

A WIM with a single edition created via New-WindowsImage fails when trying to mount the edition due to no value in ImageFlags
changein the code on 4075 from
# If there's only one image in the WIM, just selected that.
if ($openWim.Images.Count -eq 1) {
$Edition = $openWim.Images[0].ImageFlags
$openImage = $openWim[$Edition]
} else {

to
# If there's only one image in the WIM, just selected that.
if ($openWim.Images.Count -eq 1)
{
$Edition = 1
}
got it working.

Setting up Containers without Internet Connectivity

Does anyone know a method to install and configure containers on Windows 2016 TP4 without Internet connectivity? I've gotten as far as installing docker but don't know how to pull down the docker images manually. Any insight would be appreciated.

This what I see basically

Querying status of Windows feature: Containers...
Feature Containers is already enabled.
Querying status of Windows feature: Hyper-V...
Feature Hyper-V is already enabled.
Waiting for Hyper-V Management...
Networking is already configured.  Confirming configuration...
Getting Container OS image (WindowsServerCore) version 10.0.10586.0 from OneGet (this may take a few minutes)...
Install-ContainerImage : Unable to download.
At C:\Scripts\Install-ContainerHost.ps1:461 char:17
+ ...              Install-ContainerImage $imageName -Version $imageVersion
+                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Write-Error], WriteErrorException
    + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,Install-ContainerImage

Container base image install complete.  Querying container images...
Waiting for VMMS to return image at (02/04/2016 06:08:16)...
Waiting for VMMS to return image at (02/04/2016 06:08:18)...
Waiting for VMMS to return image at (02/04/2016 06:08:20)...
Waiting for VMMS to return image at (02/04/2016 06:08:22)...
Waiting for VMMS to return image at (02/04/2016 06:08:24)...
Waiting for VMMS to return image at (02/04/2016 06:08:26)...
Waiting for VMMS to return image at (02/04/2016 06:08:28)...
Waiting for VMMS to return image at (02/04/2016 06:08:30)...
Waiting for VMMS to return image at (02/04/2016 06:08:32)...
Waiting for VMMS to return image at (02/04/2016 06:08:34)...

and it never grabs the image.. Is there a manual work around? Download files on another box and copy to the server?

New-ContainerHost.ps1 may fail when temp directory path elements are too long

When temp directory path elements are too long, the Get-Nsmm function within New-ContainerHost.ps1 obtains a path using one or more short names which causes the Remove-Item command to fail.

Related issue on ServerFault

We was able to workaround this issue by making the adjustment on line 1080 as mentioned in the accepted ServerFault answer:
- $nssmZip = "$($env:temp)\$(Split-Path $nssmUri -Leaf)"
+ $nssmZip = [System.IO.Path]::GetFullPath("$($env:temp)\$(Split-Path $nssmUri -Leaf)")

This is the error encountered when paths were long enough for short names to be used:

C:\New-ContainerHost.ps1 : An object at the specified path C:\Users\FILE~1.NAM does not exist.
At line:1 char:1
+ C:\New-ContainerHost.ps1 -VMName docker-hyperv -WindowsImage ServerD ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Write-Error], WriteErrorException
    + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,New-ContainerHost.ps1

Trying to install Hyper-V containers and getting the following errors PS C:\WINDOWS\system32> c:\New-ContainerHost.ps1 -VmName HyperVContainer1 -WindowsImage ServerDatacenterCore -Hyperv c:\New-ContainerHost.ps1 : File C:\New-ContainerHost.ps1 cannot be loaded because running scripts is disabled on this system. For more information, see about_Execution_Policies at http://go.microsoft.com/fwlink/?LinkID=135170. At line:1 char:1 + c:\New-ContainerHost.ps1 -VmName HyperVContainer1 -WindowsImage Serve ... + ~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : SecurityError: (:) [], PSSecurityException + FullyQualifiedErrorId : UnauthorizedAccess

Trying to install Hyper-V containers and getting the following errors PS C:\WINDOWS\system32> c:\New-ContainerHost.ps1 -VmName HyperVContainer1 -WindowsImage ServerDatacenterCore -Hyperv c:\New-ContainerHost.ps1 : File C:\New-ContainerHost.ps1 cannot be loaded because running scripts is disabled on this system. For more information, see about_Execution_Policies at http://go.microsoft.com/fwlink/?LinkID=135170. At line:1 char:1 + c:\New-ContainerHost.ps1 -VmName HyperVContainer1 -WindowsImage Serve ... + ~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : SecurityError: (:) [], PSSecurityException + FullyQualifiedErrorId : UnauthorizedAccess

Trying to install MS Container on Hyper-V and getting error after issuing PowerShell command At line:1 char:37 + PS c:\New-ContainerHost.ps1 -VmName <mylittleserver> -WindowsImage Server ... The '<' operator is reserved for future use. + CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException + FullyQualifiedErrorId : RedirectionNotSupported

PS C:\WINDOWS\system32> PS c:\New-ContainerHost.ps1 -VmName -WindowsImage At line:1 char:37

  • PS c:\New-ContainerHost.ps1 -VmName -WindowsImage Server ...
  •                                 ~
    
    The '<' operator is reserved for future use.
    • CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
    • FullyQualifiedErrorId : RedirectionNotSupported

Convert-WindowsImage Write-W2VError doesn't work in ISE due to conversion of the color

If Write-W2VError is called when running Convert-WindowsImage via the ISE, it errors due to the conversion of the color

Write-W2VError : Cannot bind parameter 'ForegroundColor'. Cannot convert the "#FFFF0000" value of type
"System.Windows.Media.Color" to type "System.ConsoleColor".
At C:\Users\admin\Scripts\Convert-WindowsImage.ps1:2302 char:13

  •         Write-W2VError $_
    
  •         ~~~~~~~~~~~~~~~~~
    
    • CategoryInfo : InvalidArgument: (:) [Write-W2VError], ParameterBindingException
    • FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Write-W2VError

Install-ContainerHost.ps1 doesn't clean up the scheduled task. This creates a Powershell window at each login

I downloaded and ran Install-ContainerHost.ps1 from ~. Each time I log in, I'm greeted with a PowerShell window with this text:

Querying status of Windows feature: Containers...
Feature Containers is already enabled.
Waiting for Hyper-V Management...
Networking is already configured.  Confirming configuration...
Image WindowsServerCore is already installed on this machine.
The following images are present on this machine:
    ContainerImage (Name = 'WindowsServerCoreIIS') [Publisher = 'CN=Demo', Version = '1.0.0.0']
    ContainerImage (Name = 'WindowsServerCore') [Publisher = 'CN=Microsoft', Version = '10.0.10586.0']

Docker is already installed.
Script complete!

If I look for scheduled tasks, I see this left behind:

PS C:\Windows\system32> Get-ScheduledTask *container*

TaskPath                                       TaskName                          State
--------                                       --------                          -----
\                                              ContainerBootstrap                Running

Install-ContainerHost.ps1 may fail when following container setup instructions

The Hyper-V container setup instructions instruct the user to run the following command:
powershell.exe -NoProfile c:\New-ContainerHost.ps1 -VMName testcont -WindowsImage ServerDatacenterCore -Hyperv

However, a conflict arises in Install-ContainerHost.ps1 when the ServerDatacenterCore image is used and the Hyperv parameter is included.

The install command run by the guest machine ends up being something like:
C:\Install-ContainerHost.ps1 -PSDirect -NATSubnetPrefix 172.16.0.0/24 -DockerPath "C:\Windows\System32\docker.exe" WimPath "D:\WindowsServerCore.wim" -HyperV.

When using these parameters an issue occurs on line 538 ($newBaseImages += Wait-InstalledContainerImage $imageName). $imageName is set to NanoServer due to $HyperV being provided, but the image installed is actually WindowsServerCore since $WimPath is provided. Because of this mismatch the Wait-InstalledContainerImage function fails via timeout.

$imageName should match the name of the image that was actually installed.

The following change was a sufficient workaround for us when doing a fresh install but may fail under other circumstances:

    Write-Output "Container base image install complete.  Querying container images..."
-   $newBaseImages += Wait-InstalledContainerImage $imageName
+   $newBaseImages += Wait-InstalledContainerImage *
  }

connect to Azure VM with WinRM

I just checked the docs at
https://msdn.microsoft.com/en-us/virtualization/windowscontainers/quick_start/azure_setup
and I get in trouble to find the right endpoint settings in Azure.
It seeems that the concept has completly changed with Azure classic and new RM.
Currently I have a Win2006 TP4 VM running and cannot even find any "endpoints".

My goal is to reach my VM and container inside via WinRM from a corporate network through proxy.
not an easy one right now?!

Is it posible to place this in a module?

I tried to wrap this in a module for better portabiltiy, and it failed horribly. I think there is a scoping issue. Not to mention functions inside of functions but fixing that did not resolve the error.

MSSQL 2016 SERVER MANAGEMENT STUDIO INSTALL IN HYPER-V WINDOWS SERVER 2016 CORE FAILS GETTING ERROR [0CBC:0470][2016-03-22T13:33:28]e000: MainViewModel.OnBundleAction: Bundle action failed

MSSQL 2016 SERVER MANAGEMENT STUDIO INSTALL IN HYPER-V WINDOWS SERVER 2016 CORE FAILS GETTING ERROR [0CBC:0470][2016-03-22T13:33:28]e000: MainViewModel.OnBundleAction: Bundle action failed

Successfully installed MSMQ from Powershell command then started installing MSQL
C:\install\SQLServer2016-x64-ENU\Tools>SSMS-FULL-SETUP.EXE

:::::::::::
:::::::::::
[0CBC:0470][2016-03-22T13:33:28]i319: Applied rollback package: SqlSupport_x86, result: 0x0, restart: None
[0FC0:0A40][2016-03-22T13:33:28]i329: Removed package dependency provider: {F6FDABD9-62CE-48D4-A10B-C22DE64A8CF3}, package: SqlSupport_x86
[0FC0:0A40][2016-03-22T13:33:28]i351: Removing cached package: SqlSupport_x86, from path: C:\ProgramData\Package Cache{F6FDABD9-62CE-48D4-A10B-C22DE64A8CF3}v13.0.1100.213
[0FC0:0A40][2016-03-22T13:33:28]i329: Removed package dependency provider: {5C7BA9C8-7A8B-4BAB-AEBB-17586F5C1546}, package: SqlSupport_x64
[0FC0:0A40][2016-03-22T13:33:28]i351: Removing cached package: DotNet46, from path: C:\ProgramData\Package Cache\83D048D171FF44A3CAD9B422137656F585295866
[0CBC:0470][2016-03-22T13:33:28]i000: MainViewModel.OnPackageActionProgress: Percent completed: 100, Overall progress: 100
[0FC0:0A40][2016-03-22T13:33:28]i330: Removed bundle dependency provider: {32b0803e-f6ab-4f8b-a06a-934142beba0f}
[0FC0:0A40][2016-03-22T13:33:28]i352: Removing cached bundle: {32b0803e-f6ab-4f8b-a06a-934142beba0f}, from path: C:\ProgramData\Package Cache{32b0803e-f6ab-4f8b-a06a-934142beba0f}
[0CBC:0470][2016-03-22T13:33:28]e000: MainViewModel.OnBundleAction: Bundle action failed
[0CBC:0470][2016-03-22T13:33:28]i399: Apply complete, result: 0x800713ec, restart: None, ba requested restart: No
[0CBC:0FB0][2016-03-22T13:47:56]i000: MainViewModel.OpenUrl: Opening url: C:\Users\ADMINI~1\AppData\Local\Temp\SsmsSetup\SSMS-Full-Setup_20160322131627.log

Managing IIS in a container

Hi All,

Adding IIS to a container makes sense but can anyone explain the intended model for how sites should be deployed using IIS?

  1. Should it be 1 site per container?
  2. Can IIS only be managed visit command line?
  3. Are we limited to .Net Core or can we deploy apps built on the full .net framework?

Any guidance would be awesome!

New-ContainerHost.ps1 may assign an external network with no connectivity to the host VM

I have two VMSwitches on my laptop - "Ethernet" and "Wifi." Typically I bind both to my VMs so that there is at least one working network connection to the VM.

New-ContainerHost.ps1 assigned the VM's only network to "Ethernet" which was disconnected at the time. Setup inside the VM failed.

I don't see any way to retry or resume :(

cmdlet New-ContainerHost.ps1 at command pipeline position 1
Supply values for the following parameters:
Password: ********
Before installing and using the Windows Server Technical Preview 4 with Containers virtual machine you must:
    1. Review the license terms by navigating to this link: http://aka.ms/tp4/containerseula
    2. Print and retain a copy of the license terms for your records.
By downloading and using the Windows Server Technical Preview 4 with Containers virtual machine you agree to such license terms.
Please confirm you have accepted and agree to the license terms.
[N] No  [Y] Yes  [?] Help (default is "N"): y
Using VHD path C:\Users\Public\Documents\Hyper-V\Virtual Hard Disks
Using external switch Ethernet
Copying ServerDatacenterCore ISO from https://aka.ms/tp4/serveriso to C:\Users\Public\Documents\Hyper-V\Virtual Hard Disks\Windows
ServerTP4.iso (this may take several minutes)...
Mounting ISO...
Converting WIM to VHD...

Windows(R) Image to Virtual Hard Disk Converter for Windows(R) 10
Copyright (C) Microsoft Corporation.  All rights reserved.
Version 10.0.10586.0.amd64fre.th2_release.151029-1700

INFO   : Looking for the requested Windows image in the WIM file
INFO   : Image 3 selected (ServerDataCenterCore)...
INFO   : Creating sparse disk...
INFO   : Mounting VHD...
INFO   : Initializing disk...
INFO   : Creating single partition...
INFO   : Formatting windows volume...
INFO   : Windows path (E:) has been assigned.
INFO   : System volume location: E:
INFO   : Applying image to VHD. This could take a while...
INFO   : Image was applied successfully.
INFO   : Making image bootable...
INFO   : Fixing the Device ID in the BCD store on VHD...
INFO   : Drive is bootable. Cleaning up...
INFO   : Dismounting VHD...
INFO   : Closing Windows image...
INFO   : Done.
Dismounting ISO...
Creating temporary VHDX for the Containers OS Image WIM...
Initializing disk...
Saving Container OS image (WindowsServerCore) version 10.0.10586.0 from OneGet to D: (this may take a few minutes)...
Installing ContainerProvider package...
Dismounting VHD...
Creating VHD files for VM Core1...
VHD mount must be synchronized with other running instances of this script.  Waiting for exclusive access...
Mounting ServerDatacenterCore VHD for offline processing...
Enabling Containers feature on drive E...
Enabling Hyper-V feature on drive E...
Copying Docker into ServerDatacenterCore VHD...
Copying NSSM into ServerDatacenterCore VHD...
This script uses a third party tool: NSSM. For more information, see https://nssm.cc/usage
Downloading NSSM...
Extracting NSSM from archive...
Writing default unattend.xml...
Copying Install-ContainerHost.ps1 into ServerDatacenterCore VHD...
Dismounting VHD...
Creating VM Core1...
Configuring VM Core1...
Connecting VM to switch Ethernet
WARNING: Nested virtualization is an unsupported preview feature. Hypervisors other than the Hyper-V hypervisor running in a
guest virtual machine are likely to fail. Furthermore, some Hyper-V features are incompatible with nested virtualization, such as
 dynamic memory, checkpoints, and save/restore.
Starting VM Core1...
Waiting for VM Core1 to boot...
Connected to VM Core1 Heartbeat IC.
Waiting for specialization to complete (this may take a few minutes)...
Executing Install-ContainerHost.ps1 inside the VM...
Completing container install...
Querying status of Windows feature: Containers...
Feature Containers is already enabled.
Querying status of Windows feature: Hyper-V...
Feature Hyper-V is already enabled.
Waiting for Hyper-V Management...
Enabling container networking...
Creating container switch (NAT)...
Creating NAT for 172.16.0.0/24...
Installing Container OS image from D:\WindowsServerCore.wim (this may take a few minutes)...
Container base image install complete.  Querying container images...
Waiting for VMMS to return image at (01/25/2016 13:54:48)...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
Waiting for network connectivity...
C:\Install-ContainerHost.ps1 : Network not connected after 5 minutes
At line:1 char:1
+ C:\Install-ContainerHost.ps1 -PSDirect -NATSubnetPrefix 172.16.0.0/24 ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Write-Error], WriteErrorException
    + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,Install-ContainerHost.ps1

C:\New-ContainerHost.ps1 : Install-ContainerHost.ps1 failed in the VM
At line:1 char:1
+ c:\New-ContainerHost.ps1 –VmName Core1 -WindowsImage ServerDatacenter ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Write-Error], WriteErrorException
    + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,New-ContainerHost.ps1

Install-ContainerHost.ps1 may fail in Wait-InstalledContainerImage

On line 1032, $timeElapsed = $(Get-Date) - $startTime may throw an exception when the constraint $newBaseImages.count -neq 0 is not immediately satisfied. This is caused by $startTime not being assigned.

We were able to work around this issue by making the following modification on line 1028:

  $newBaseImages = Get-InstalledContainerImage $BaseImageName
+ $startTime = Get-Date
  while ($newBaseImages.Count -eq 0)

Original encountered exception:

C:\Install-ContainerHost.ps1 : Cannot find an overload for "op_Subtraction" and the argument count: "2".
At line:1 char:1
+ C:\Install-ContainerHost.ps1 -PSDirect -NATSubnetPrefix 172.16.0.0/24 ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Write-Error], WriteErrorException
    + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,Install-ContainerHost.ps1

work_in_progress.md not up2date with shared folders

shared folders came with tp4 and are already part of the documentation, so that part in here needs updates:
Virtualization-Documentation / virtualization / windowscontainers / about / work_in_progress.md

`All non-C:/ drives are visible in containers

All non-C:/ drives available to the container host are automatically mapped into new running Windows Containers.

At this point in time there is no way to selectively map folders into a container, as an interim work around drives are mapped automatically.

*Work Around: *
We're working on it. In the future there will be folder sharing.
`

Docker port binding not working as per documentation (iisdemo)

The iisdemo / port binding described on https://msdn.microsoft.com/en-us/virtualization/windowscontainers/quick_start/manage_docker#create-iis-image-1- does not work in the way described there.

It's either not clear what the host is (from my understanding, it should be the actual Windows 2016 server that I run docker on, so it should be "localhost" relative from there) or the port binding isn't working.

docker run --name iisdemo -it -p 8800:80 windowsservercoreiis cmd

does not bind the port 8800 on the host. I should be able to open "localhost:8800" or "172.16.0.1:8800" on the host (172.16.0.1 being the IP of the host, while 172.16.0.2 being the IP of the container).

Neither works a:

docker run --name iisdemo -it -p 80:80 windowsservercoreiis cmd

(Firewall rules are added, but also Windows Firewall entirely disabled just to be sure).

What's also interesting is that when I block port 80 on the host with some other service, and then start the docker container with port binding 80:80, I don't get any conflict, which I would expect though.

I can reach the IIS via the container IP, but I cannot reach it via host IP and bound port.

Original, fully detailed problem description here:
http://superuser.com/questions/1057223/windows-container-port-binding-on-windows-server-2016-not-working

Update:

In a second attempt, I used powershell instead of Docker to manage the container. I followed the documentation step by step on https://msdn.microsoft.com/en-us/virtualization/windowscontainers/quick_start/manage_powershell#create-iis-container-1-, but also with no luck. I cannot reach the IIS via the host IP and bound port, only via the container IP.

Install-ContainerHost.ps1 leaves behind an error file

Steps:

  • Copy Install-ContainerHost.ps1 to ~/
  • cd ~
  • Install-ContainerHost.ps1

After the reboot, there is a file left behind that says the script failed.

PS C:\Windows\system32> cd ~
PS C:\Users\Administrator> ls


    Directory: C:\Users\Administrator


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-r---       12/17/2015   5:10 PM                Contacts
d-r---       12/17/2015   5:10 PM                Desktop
d-r---       12/18/2015   1:03 PM                Documents
d-r---       12/17/2015   5:10 PM                Downloads
d-r---       12/17/2015   5:10 PM                Favorites
d-----       12/18/2015   4:46 PM                iisdemo
d-r---       12/17/2015   5:10 PM                Links
d-r---       12/17/2015   5:10 PM                Music
d-r---       12/17/2015   5:10 PM                Pictures
d-r---       12/17/2015   5:10 PM                Saved Games
d-r---       12/17/2015   5:10 PM                Searches
d-r---       12/17/2015   5:10 PM                Videos
-a----       12/18/2015  12:19 PM            158 Install-ContainerHost.err
-a----       12/18/2015  11:22 AM          32098 Install-ContainerHost.ps1
-a----       12/18/2015  11:17 AM          46351 New-ContainerHost.ps1


PS C:\Users\Administrator> cat .\Install-ContainerHost.err
If this file exists when Install-ContainerHost.ps1 exits, the script failed!

Python not working in Docker Container

Tried installing python by copying the C:\Python27 directory and setting the PATH etc. But when I run the command I don't see any output and the command just exits. Is there a better way to run this

I am using Python 2.7.10 which runs fine on the Windows box

Typo in HybridInstaller.ps1 (IIS10.0)

You define this param

    [Parameter(ParameterSetName='ContainerPowerShell')]
    [string]$InternetVirtualSwitchName = "Virtual Switch"

then incorrectly reference it here

   $c1 = New-Container "$containerImageName Container" -ContainerImageName "WindowsServerCore" -Switch $internetVirtualSwitch

Simple typo :)

Trying to Start Hyper-V container and getting the following error after it has been created ... (X) The application encountered an error while attempting to change the state of 'HyperVContainer2'. 'HyperVContainer2' failed to start. 'HyperVContainer2' could not initialize. 'HyperVContainer2' failed to start. (Virtual machine ID DC2D005A-197B-4E20-8B4B-E5E444266AE0) 'HyperVContainer2' could not initialize. (Virtual machine ID DC2D005A-197B-4E20-8B4B-E5E444266AE0)

Trying to Start Hyper-V container and getting the following error after has been created ...
(X) The application encountered an error while attempting to change the state of 'HyperVContainer2'.
'HyperVContainer2' failed to start.
'HyperVContainer2' could not initialize.
'HyperVContainer2' failed to start. (Virtual machine ID DC2D005A-197B-4E20-8B4B-E5E444266AE0)
'HyperVContainer2' could not initialize. (Virtual machine ID DC2D005A-197B-4E20-8B4B-E5E444266AE0)

PS C:\WINDOWS\system32> c:\New-ContainerHost.ps1 -VmName HyperVContainer2 -WindowsImage ServerDatacenterCore -Hyperv

cmdlet New-ContainerHost.ps1 at command pipeline position 1
Supply values for the following parameters:
Password: *********
Before installing and using the Windows Server Technical Preview 4 with Containers virtual machine you must:
1. Review the license terms by navigating to this link: http://aka.ms/tp4/containerseula
2. Print and retain a copy of the license terms for your records.
By downloading and using the Windows Server Technical Preview 4 with Containers virtual machine you agree to such license terms. Please confirm you have accepted and agree to
the license terms.
[N] No [Y] Yes [?] Help (default is "N"): Y
Using VHD path C:\Users\Public\Documents\Hyper-V\Virtual Hard Disks
Using external switch External VM Virtual Switch
The latest ServerDatacenterCore VHD is already present on this system.
ServerDatacenterCore Container OS Image (WIM) is already present on this system.
Creating VHD files for VM HyperVContainer2...
VHD mount must be synchronized with other running instances of this script. Waiting for exclusive access...
Mounting ServerDatacenterCore VHD for offline processing...
Enabling Containers feature on drive E...
Enabling Hyper-V feature on drive E...
Copying Docker into ServerDatacenterCore VHD...
Copying NSSM into ServerDatacenterCore VHD...
This script uses a third party tool: NSSM. For more information, see https://nssm.cc/usage
Downloading NSSM...
Extracting NSSM from archive...
ExpandArchiveHelper : Failed to create file 'C:\Users\admin\AppData\Local\Temp\nssm\nssm-2.24\win32\nssm.exe' while expanding the archive file
'C:\Users\admin\AppData\Local\Temp\nssm-2.24.zip' contents as the file 'C:\Users\admin\AppData\Local\Temp\nssm\nssm-2.24\win32\nssm.exe' already exists. Use the -Force
parameter if you want to overwrite the existing directory 'C:\Users\admin\AppData\Local\Temp\nssm\nssm-2.24\win32\nssm.exe' contents when expanding the archive file.
At C:\windows\system32\windowspowershell\v1.0\Modules\Microsoft.PowerShell.Archive\Microsoft.PowerShell.Archive.psm1:394 char:17

  • ... ExpandArchiveHelper $resolvedSourcePaths $resolvedDestina ...
  •             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    • CategoryInfo : InvalidOperation: (C:\Users\admin...\win32\nssm.exe:String) [Write-Error], IOException
    • FullyQualifiedErrorId : ExpandArchiveFileExists,ExpandArchiveHelper

Writing default unattend.xml...
Copying Install-ContainerHost.ps1 into ServerDatacenterCore VHD...
Dismounting VHD...
Creating VM HyperVContainer2...
Configuring VM HyperVContainer2...
Connecting VM to switch External VM Virtual Switch
WARNING: Nested virtualization is an unsupported preview feature. Hypervisors other than the Hyper-V hypervisor running in a guest virtual machine are likely to fail.
Furthermore, some Hyper-V features are incompatible with nested virtualization, such as dynamic memory, checkpoints, and save/restore.
Starting VM HyperVContainer2...
Start-VM : 'HyperVContainer2' failed to start.
Not enough memory in the system to start the virtual machine HyperVContainer2.
Could not initialize memory: Ran out of memory (0x8007000E).
'HyperVContainer2' failed to start. (Virtual machine ID DC2D005A-197B-4E20-8B4B-E5E444266AE0)
Not enough memory in the system to start the virtual machine HyperVContainer2 with ram size 1024 megabytes. (Virtual machine ID DC2D005A-197B-4E20-8B4B-E5E444266AE0)
'HyperVContainer2' could not initialize memory: Ran out of memory (0x8007000E). (Virtual machine ID DC2D005A-197B-4E20-8B4B-E5E444266AE0)
At C:\New-ContainerHost.ps1:787 char:9

  •     $vm | Start-VM | Out-Null
    
  •           ~~~~~~~~
    
    • CategoryInfo : FromStdErr: (:) [Start-VM], VirtualizationException
    • FullyQualifiedErrorId : OutOfMemory,Microsoft.HyperV.PowerShell.Commands.StartVM

Waiting for VM HyperVContainer2 to boot...

Actions taken:

    • Upgraded Memory from 1024MB to 2048MB for the container in Hper-V Settings.
    • Deleted all temp files in folder C:\Users\admin\AppData\Local\Temp
    • Re-Attached VHD on E: drive in Disk Management using C:\Users\Public\Documents\Hyper-V\Virtual Hard Disks\HyperVContainer2-WIM.vhdx
  1. Deleted previous attempts of unsuccessful and incomplete containers such as the "Mylittleservercontainer", "HyperVcontainer1" in Hyper-V.

<< RESOLVED >>

PS C:\WINDOWS\system32> c:\New-ContainerHost.ps1 -VmName HyperVContainerfirst -WindowsImage ServerDatacenterCore -Hyperv

cmdlet New-ContainerHost.ps1 at command pipeline position 1
Supply values for the following parameters:
Password: *********
Before installing and using the Windows Server Technical Preview 4 with Containers virtual machine you must:
1. Review the license terms by navigating to this link: http://aka.ms/tp4/containerseula
2. Print and retain a copy of the license terms for your records.
By downloading and using the Windows Server Technical Preview 4 with Containers virtual machine you agree to such license terms. Please confirm you have accepted and agree to the license terms.
[N] No [Y] Yes [?] Help (default is "N"): Y
Using VHD path C:\Users\Public\Documents\Hyper-V\Virtual Hard Disks
Using external switch External VM Virtual Switch
The latest ServerDatacenterCore VHD is already present on this system.
ServerDatacenterCore Container OS Image (WIM) is already present on this system.
Creating VHD files for VM HyperVContainerfirst...
VHD mount must be synchronized with other running instances of this script. Waiting for exclusive access...
Mounting ServerDatacenterCore VHD for offline processing...
Enabling Containers feature on drive E...
Enabling Hyper-V feature on drive E...
Copying Docker into ServerDatacenterCore VHD...
Copying NSSM into ServerDatacenterCore VHD...
This script uses a third party tool: NSSM. For more information, see https://nssm.cc/usage
Downloading NSSM...
Extracting NSSM from archive...
Writing default unattend.xml...
Copying Install-ContainerHost.ps1 into ServerDatacenterCore VHD...
Dismounting VHD...
Creating VM HyperVContainerfirst...
Configuring VM HyperVContainerfirst...
Connecting VM to switch External VM Virtual Switch
WARNING: Nested virtualization is an unsupported preview feature. Hypervisors other than the Hyper-V hypervisor running in a guest virtual machine are likely to fail. Furthermore, some Hyper-V
features are incompatible with nested virtualization, such as dynamic memory, checkpoints, and save/restore.
Starting VM HyperVContainerfirst...
Waiting for VM HyperVContainerfirst to boot...
Connected to VM HyperVContainerfirst Heartbeat IC.
Waiting for specialization to complete (this may take a few minutes)...
C:\New-ContainerHost.ps1 : Could not connect to PS Direct after 30 minutes
At line:1 char:1

  • c:\New-ContainerHost.ps1 -VmName HyperVContainerfirst -WindowsImage S ...
  • - CategoryInfo          : NotSpecified: (:) [Write-Error], WriteErrorException
    - FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,New-ContainerHost.ps1
    
    

PS C:\WINDOWS\system32>

<<<<<<<< Timedout because I went for a hour Lunch, I went back to Hyper-V and started HyperVContainerfirst container and it asked me for the Password which I entered. I was able to successfully login and see the container by listing the Windows files and Directory >>>>>>>>>>>>>

I will continue with installing Application in my container

Please add switches to New-NanoServerImage to enable LLMNR and set firewall profile to private

Please add (a) switch(es) to New-NanoServerImage to allow LLMNR after first boot and/or set firewall profile to private.

Probably useless if Nanoserver is going to join a domain, but very useful if not. Scripting the IP address is hard without a registering DNS server, so practically in other situations its a manual step which can be eliminated. There's ways around this but it's tedious to add a startup script and PS Direct isn't always as direct as the name implies. And people know the network that the machine will connect to - obviously I would say, in many situations.

I post this issue here because I couldn't find New-NanoServerImage anywhere on GitHub.

Convert-WindowsImage not handling arrays for Edition

When passing a string to Convert-WindowsImage, it works:
Convert-WindowsImage -Edition "ServerDataCenter"

When passing an array to Convert-WindowsImage, it errors:
Convert-WindowsImage -Edition @("ServerDataCenter","ServerDataCenterCore")
ERROR : The property 'Count' cannot be found on this object. Verify that the property exists.

useing a number for edition fails with string conversion

I know this is an issue on Windows 10. I have not tested on any others.

when using -edition 4. it throws an error converting the number from a string to a number.
changing line 4092 to read
$openImage = $openWim[Int32]
resolved it for me.
for some reason I have to cast the string as a string before casting at as an INT.

Sample dockerfiles not doing what their corresponding README.md say

The documentation on
https://github.com/Microsoft/Virtualization-Documentation/tree/master/windows-server-container-samples/mysql

says:

This dockerfile will install MySQL Community Server, version 5.7.9, in a Windows Server Core based container.

but all the dockerfile does it setting the PATH, it's not executing any setup. Or am I missing something?

RUN setx /M PATH "%PATH%;C:\mysql-5.7.9-winx64"

Same goes for the Sqlite example but maybe others as well.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.