WIN1@Codename

Codename

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Windows Container Docker and Docker-PowerShell Commands

#Install Docker Engine

Install-WindowsFeature containers

Restart-Computer -Force

 

Invoke-WebRequest "https://download.docker.com/components/engine/windows-server/cs-1.12/docker.zip" -OutFile "$env:TEMP\docker.zip" -UseBasicParsing

Expand-Archive -Path "$env:TEMP\docker.zip" -DestinationPath $env:ProgramFiles

$env:path += ";c:\program files\docker"

[Environment]::SetEnvironmentVariable("Path", $env:Path + ";C:\Program Files\Docker", [EnvironmentVariableTarget]::Machine)

dockerd --register-service

Start-Service docker

 

#Install DockerPowerShell

Invoke-WebRequest "https://github.com/Microsoft/Docker-PowerShell/releases/download/v0.1.0/Docker.0.1.0.zip" -OutFile "$env:TEMP\dockerpowershell.zip" -UseBasicParsing

Expand-Archive -Path "$env:TEMP\dockerpowershell.zip" -DestinationPath $home\Documents\WindowsPowerShell\Modules\Docker

Register-PSRepository -Name DockerPS-Dev -SourceLocation https://ci.appveyor.com/nuget/docker-powershell-dev

Install-Module Docker -Repository DockerPS-Dev -Force

Update-Module Docker

 

#Docker PowerShell Commands

Get-Command -Module Docker

 

#View MS ContainerImages

docker search microsoft

 

#Pull ContainerImages

docker pull microsoft/windowsservercore

docker pull microsoft/iis

docker pull microsoft/nanoserver

 

Pull-ContainerImage microsoft/windowsservercore

Pull-ContainerImage microsoft/iis

Pull-ContainerImage microsoft/nanoserver

 

#ContainerImages

docker images

 

Get-ContainerImage

 

#Deploy IIS Container

docker run --name IIS01 -t -d -p 80:80 microsoft/iis #(-isolation = hyperv)

docker run -it microsoft/nanoserver powershell

 

$Image = Get-ContainerImage | Where-Object { $_.RepoTags -eq "microsoft/iis:latest" }

$Container = New-Container -Name IIS01 -Image $Image -Input #(-Isolation HyperV)

Start-Container $Container

$IP = Invoke-Command -ContainerId $Container.ID -ScriptBlock {[Net.Dns]::GetHostAddresses('').IPAddressToString[1]}

$NatName = Get-NetNat

Add-NetNatStaticMapping -NatName $NatName.Name -Protocol TCP -ExternalIPAddress 0.0.0.0 -InternalIPAddress $IP -InternalPort 80 -ExternalPort 80

#(Remove-NetNatStaticMapping -NatName $NatName.Name -StaticMappingID (Get-NetNatStaticMapping|? {$_.ExternalPort -eq 80}).StaticMappingId)

 

#Containers

docker ps -a

 

Get-Container | Select ID, Names, Image, Created, Status

 

#Start Containe

docker start IIS01

 

Start-Container IIS01

 

#Stop Container

docker stop IIS01

 

Stop-Container IIS01

 

#Del Container

docker rm IIS01

 

Remove-Container IIS01

 

#New Container Image (Repository name must be lowercase.)

docker commit IIS01 my:IISContainerImage

 

Commit-Container -Container $Container -Author WIN1 -Repository my -Tag IISContainerImage

 

#Del Container Image

docker rmi my:IISContainerImage2

 

Remove-ContainerImage my:IISContainerImage2

 

#Connect Container

docker exec -it IIS01 powershell

 

Enter-PSSession -ContainerId $Container.ID RunAsAdministrator

 

#Exec Command

docker exec IIS01 ipconfig

 

Invoke-Command -ContainerId $Container.ID -ScriptBlock {ipconfig}

 

#Push

docker login

docker commit IIS01 <USERNAME>/iiscontainerimage

docker push <USERNAME>/iiscontainerimage

 

$DockerAuth = [Docker.DotNet.Models.AuthConfig]::new()

$DockerAuth.Username = "<USERNAME>"

$DockerAuth.Password =  "<PASSWORD>"

$IMG = Get-ContaierImage <USERNAME>/iiscontainerImage

Submit-ContainerImage -Image $IMG -Authorization $DockerAuth

 

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。
スポンサーサイト

Hyper-Vコンテナの注意点、制限事項

TP4時点でのHyper-Vコンテナについて、覚書。

・Hyper-VコンテナはHyper-Vの機能を有効にしたサーバーもしくは、Nested Hyper-Vの設定をしたVM上のコンテナホストで利用可能。
Enable-NestedVm.ps1

 

・Nestedの設定をした仮想マシンには最低でも2つ以上の仮想CPUを割り当てる必要がある。1つだとHyper-Vコンテナは起動できない。

 

・Hyper-Vコンテナホストとして構築した場合、WindowsServerCoreとNanoServerのコンテナイメージがインストールされる。
 Install-ContainerHost.ps1 –HyperV

 

・Hyper-Vコンテナとして起動できるのは、NanoServerコンテナイメージから作成されたコンテナだけ。
・Hyper-Vコンテナとしてコンテナを作成する場合は New-Containerコマンドに -RuntimeTypeスイッチ をつけて「HyperV」と指定するだけ。
 New-Container -Name "HVcontainer" -ContainerImageName “NanoServer” -SwitchName "Virtual Switch" -RuntimeType HyperV

 

・Set-Containerコマンドで -RuntimeType は 「Default」と「HyperV」とで切り替え可能。
 Set-Container –RuntimeType HyperV  or Set-Container –RuntimeType Default

 

・WindowsServerCoreベースもしくは、GUI付きWindowsで構築したコンテナホスト上では、NanoServerイメージベースのコンテナは「Hyper-Vコンテナ」としてでしか起動できない。
 $Container = New-Container -Name "HVcontainer" -ContainerImageName “NanoServer” -SwitchName "Virtual Switch" -RuntimeType HyperV
 Start-Container $Container 

 $Container = New-Container -Name "HVcontainer" -ContainerImageName “NanoServer” -SwitchName "Virtual Switch" -RuntimeType Default
 Start-Container $Container 
×

 

・「WindwosServerコンテナ」(Defaultコンテナ)として作成した、NanoServerイメージベースのコンテナは、コンテナホストとOSが異なるため。

・コンテナはコンテナホストのOSを透過的に参照(OSはホストを参照)しているので、コンテナとコンテナホストのOSが異なる場合は要件に反する。 
 ↓
 起動できない

・Hyper-Vコンテナはコンテナホストとは隔離されている状態(仮想マシンと同様)で稼働するので、コンテナホストのOSを参照していない

・Hyper-Vコンテナはコンテナの特徴である展開の速さと小ささを、NanoServerと仮想マシン技術を組み合わせて実現したもの。
 ↓
 コンテナと仮想マシンの中間的なもの

・NanoServerイメージベースのコンテナは、NanoServerで構築したコンテナホスト上であれば、「Default」と「HyperV」どちらでも起動可能。

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。