はじめに
くどうです。
Windows Server Container Previrewがでました。
Azureでは既に使えるようになっています。
さっそく使ってみましょう。
ちなみにContaniertosとは?
They are an isolated, resource controlled, and portable operating environment.
Basically, a container is an isolated place where an application can run without affecting the rest of the system and without the system affecting the application. Containers are the next evolution in virtualization.
If you were inside a container, it would look very much like you were inside a freshly installed physical computer or a virtual machine. And, to Docker, a Windows Server Container can be managed in the same way as any other container.
ようはDockerと同じ(ような)ものです。
Containersを使ってみよう
Quick Startを参考にしています。
https://msdn.microsoft.com/virtualization/windowscontainers/quick_start/manage_powershell
最初に、ログイン後の画面を見ていきますがServer Coreのようにコマンドプロンプトが一つ。フルインストールから見るとやはり、さみしいですね。
Quick Startを参考にしています。
https://msdn.microsoft.com/virtualization/windowscontainers/quick_start/manage_powershell
PowerShellを起動します。
C:Userslocaladmin>powershell
Windows PowerShell
Copyright (C) 2015 Microsoft Corporation. All rights reserved.
PS C:Userslocaladmin>
コマンドを確認してみます。
思ったより少ないです。
PS C:Userslocaladmin> Get-Command -Module Containers
CommandType Name Version Source
----------- ---- ------- ------
Function Install-ContainerOSImage 1.0.0.0 Containers
Function Uninstall-ContainerOSImage 1.0.0.0 Containers
Cmdlet Add-ContainerNetworkAdapter 1.0.0.0 Containers
Cmdlet Connect-ContainerNetworkAdapter 1.0.0.0 Containers
Cmdlet Disconnect-ContainerNetworkAdapter 1.0.0.0 Containers
Cmdlet Export-ContainerImage 1.0.0.0 Containers
Cmdlet Get-Container 1.0.0.0 Containers
Cmdlet Get-ContainerHost 1.0.0.0 Containers
Cmdlet Get-ContainerImage 1.0.0.0 Containers
Cmdlet Get-ContainerNetworkAdapter 1.0.0.0 Containers
Cmdlet Import-ContainerImage 1.0.0.0 Containers
Cmdlet Move-ContainerImageRepository 1.0.0.0 Containers
Cmdlet New-Container 1.0.0.0 Containers
Cmdlet New-ContainerImage 1.0.0.0 Containers
Cmdlet Remove-Container 1.0.0.0 Containers
Cmdlet Remove-ContainerImage 1.0.0.0 Containers
Cmdlet Remove-ContainerNetworkAdapter 1.0.0.0 Containers
Cmdlet Set-ContainerNetworkAdapter 1.0.0.0 Containers
Cmdlet Start-Container 1.0.0.0 Containers
Cmdlet Stop-Container 1.0.0.0 Containers
Cmdlet Test-ContainerImage 1.0.0.0 Containers
Containerを作成してちょっといじってみる
Get-ContainerImage
コマンドでロードされているConteinerイメージを確認してみましょう。
PS C:Userslocaladmin> Get-ContainerImage
Name Publisher Version IsOSImage
---- --------- ------- ---------
WindowsServerCore CN=Microsoft 10.0.10514.0 True
Get-VMSwitch
コマンドで利用可能なスイッチを確認します。
PS C:Userslocaladmin> Get-VMSwitch
Name SwitchType NetAdapterInterfaceDescription
---- ---------- ------------------------------
Virtual Switch NAT
Conteinerの作成は New-Container
コマンドを使います。
上記で確認したConteinerイメージとスイッチを指定し作成します。
$container
は後で利用します。
PS C:Userslocaladmin> $container = New-Container -Name "OrenoContainer" -ContainerImageName WindowsServerCore -SwitchName "Virtual Switch"
Get-Container
コマンドで、OrenoContainer
が作成されたことを確認します。
PS C:Userslocaladmin> Get-Container
Name State Uptime ParentImageName
---- ----- ------ ---------------
OrenoContainer Off 00:00:00 WindowsServerCore
Containerを起動します。Start-Container
コマンドでプロビジョビングされます。
PS C:Userslocaladmin> Start-Container -Name "OrenoContainer"
PowerShellでリモートでコマンドを打つには、Invoke-Command
または、 Enter-PSSession
を使います。ここでは、Enter-PSSession
を使用し、Containerにセッションを張ります。Container IDは$container
ストアを参照します。
PS C:Userslocaladmin> Enter-PSSession -ContainerId $container.id -RunAsAdministrator
[c0aa3e9e-5c8]: PS C:Windowssystem32>
[xxxxxxxx-xxx]これは、ContainerIDの上位11桁です。 br>
Quick Startでは
$container.ContainerId
ですが
$container.id
でも接続できます。
これで接続完了です。
あとは、ServerCoreと使い方は一緒です。
[c0aa3e9e-5c8]: PS C:Windowssystem32> ipconfig
Windows IP Configuration
Ethernet adapter vEthernet (Virtual Switch-C0AA3E9E-5C8F-4D5E-BE79-0F890924BC46-0):
Connection-specific DNS Suffix . : lv69conhost.b7.internal.cloudapp.net
Link-local IPv6 Address . . . . . : fe80::35b5:df86:74c2:167e%19
IPv4 Address. . . . . . . . . . . : 172.16.0.5
Subnet Mask . . . . . . . . . . . : 255.240.0.0
Default Gateway . . . . . . . . . : 172.16.0.1
[c0aa3e9e-5c8]: PS C:Windowssystem32> ipconfig > c:ipconfig.txt
切断するときはexit
で完了。
[c0aa3e9e-5c8]: PS C:Windowssystem32> exit
Stop-Container
で停止します。
PS C:Userslocaladmin> Stop-Container -Name "OrenoContainer"
新しいContainerイメージを作成します
イメージをContainerから作成します。スナップショットを取得する感じです。
新しいContainerイメージを作成するには New-ContainerImage
コマンドを使います。
PS C:Userslocaladmin> $newimage = New-ContainerImage -ContainerName OrenoContainer -Publisher Demo -Name OrenoImage -Version 1.0
PS C:Userslocaladmin> Get-ContainerImage
Name Publisher Version IsOSImage
---- --------- ------- ---------
OrenoImage CN=Demo 1.0.0.0 False
WindowsServerCore CN=Microsoft 10.0.10514.0 True
New-Container
コマンドでContainerを作成します。
PS C:Userslocaladmin> $newcontainer = New-Container -Name "NewOrenoContainer" -ContainerImageName OrenoImage -SwitchName "Virtual Switch"
Containerが作成されたか確認します。
PS C:Userslocaladmin> Get-Container
Name State Uptime ParentImageName
---- ----- ------ ---------------
OrenoContainer Off 00:00:00 WindowsServerCore
NewOrenoContainer Off 00:00:00 OrenoImage
作成したContainerをスタートします。
PS C:Userslocaladmin> Start-Container $newcontainer
Containerに接続します。
PS C:Userslocaladmin> Enter-PSSession -ContainerId $newcontainer.ContainerId -RunAsAdministrator
切断します。
[d08dd716-e33]: PS C:Windowssystem32> exit
起動しているContainerをすべて停止します。
PS C:Userslocaladmin> Get-Container | Stop-Container
WARNING: The container is already in the specified state.
Containerを削除します
Containerを削除するには、Remove-Container
コマンドを使用します。
PS C:Userslocaladmin> Get-Container |Remove-Container -Force
-Force
オプションを付けない場合は、確認は必要となります。
PS C:Userslocaladmin> Get-Container |Remove-Container
Confirm
Are you sure you want to remove container "NewOrenoContainer"?
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"): y
Containerイメージを削除するには、Remove-ContainerImage
PS C:Userslocaladmin> Get-ContainerImage -Name OrenoImage | Remove-ContainerImage -Force
まとめ
ちょっとだけ本当にちょっとだけ触ってみましたが、Dockerよりコマンドもシンプルな感じがします。
使い勝手はまだ分かりませんが、良い感じがします。
ではでは。