Skip to content

MS_WindowsServerContainer

nishi_74322014 edited this page Aug 12, 2026 · 1 revision

Windows Serverコンテナ

概要

  • Windows ネイティブなコンテナで、
    Linux 上の Docker(DNET_Docker.md)と同じような仕組みで動作する。
  • コンテナ・ホストのコンテナ用 Windows カーネルを共有して動作する、
    コンテナ・ホスト上のプロセス。

詳細

サーバー環境

コンテナ用 Windows カーネルとして以下が利用できる。

ベース イメージ 用途・サイズ
Nano ServerMS_NanoServer.md 最小.NET Coreアプリ向け(数百 MB)
Server CoreMS_ServerCore.md .NET Framework / IIS向け(数 GB
Windows フル API が必要な場合(さらに大きい)

Docker(ココでは Linux コンテナの意味)と同様に、
軽量・高速なコンテナの起動や展開、管理が期待できる。

補足(バージョン互換性が最大の制約): カーネルを共有するため、
ホストとコンテナの Windows バージョンを揃える必要がある

組み合わせ プロセス分離 Hyper-V 分離
ホスト = コンテナ
ホスト > コンテナ(ホストが新しい) 不可
ホスト < コンテナ 不可 不可

Linux コンテナの「どのホストでも同じイメージが動く」という
手軽さは Windows コンテナには無い。
「ホストを更新したらコンテナが動かなくなった」という事故が起きるため、
LTSC(Long-Term Servicing Channel)のイメージを選び、
ホストとタグを揃えて管理するのが定石である。

開発環境

  • Windows Server コンテナのフロントエンドとして機能する。
  • Windows Client からコンテナホストの Windows Server を操作する。

Docker Desktop for Windows の登場により、
Windows 10 上で、Windows コンテナを実行可能になった。

Windows コンテナのモードを変更する。

Switch to windows containers

以下の Docker コマンドを実行して、動作確認してみる。

> docker image pull mcr.microsoft.com/windows:1809
1809: Pulling from windows
...
Status: Downloaded newer image for mcr.microsoft.com/windows:1809

コンテナ上で CMD を実行・起動する
--isolation=... を指定しないデフォルトは、Hyper-V 分離モード)。

> docker run -it mcr.microsoft.com/windows:1809 cmd.exe
> echo "Hello World!" > Hello.txt
> echo systeminfo > systeminfo.txt
> exit

変更をイメージに保存する。

> docker ps -a
CONTAINER ID   IMAGE                            COMMAND      ...
xxxxxxxxxxxx   mcr.microsoft.com/windows:1809   "cmd.exe"    ...

> docker commit <containerid> helloworld
> docker run helloworld cmd.exe /s /c type Hello.txt
"Hello World!"

移行メモ(本文中の打ち消し表記): 元ページには
「どうも、Hyper-V コンテナ %%じゃない%% なので」という
打ち消し線を含む編集途中の表記があった。
文脈上、「Hyper-V コンテナなので(=クライアント OS の既定は Hyper-V 分離)」
と読むのが正しく、続く「ホストの OS バージョンより古いバージョンが必要」
という記述とも整合する(Hyper-V 分離なら古いイメージも動く)。
上記本文はこれに合わせて整理した。

補足(docker commit は開発時のみ): 上の手順は動作確認用で、
実務で docker commit を使ってはならない

docker commit Dockerfile
再現性 無い(手作業の結果) ある(コードで定義)
差分の追跡 不可 Git で管理できる
CI/CD 組み込めない 組み込める

イメージは必ず Dockerfile から作る(Infrastructure as Code)。

参考

Qiita

@IT

Microsoft Learn


Tags: 移行, Windows, Hyper-V, 仮想化, コンテナ

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally