-
Notifications
You must be signed in to change notification settings - Fork 0
MS_WindowsServerContainer
- 戻る(コンテナ技術)
- Windows Serverコンテナ
- Hyper-V コンテナ
- Docker for Windows / Docker Desktop for Windows
- Windows ネイティブなコンテナで、
Linux 上の Docker(DNET_Docker.md)と同じような仕組みで動作する。 - コンテナ・ホストのコンテナ用 Windows カーネルを共有して動作する、
コンテナ・ホスト上のプロセス。
コンテナ用 Windows カーネルとして以下が利用できる。
| ベース イメージ | 用途・サイズ |
|---|---|
Nano Server(MS_NanoServer.md) |
最小。.NET Coreアプリ向け(数百 MB) |
Server Core(MS_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 コンテナのモードを変更する。

以下の 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 commitDockerfile 再現性 無い(手作業の結果) ある(コードで定義) 差分の追跡 不可 Git で管理できる CI/CD 組み込めない 組み込める イメージは必ず Dockerfile から作る(Infrastructure as Code)。
-
Windows - Docker Hub
https://hub.docker.com/_/microsoft-windows
-
Windows Server 2019でWindowsコンテナを動かすまでのチュートリアル
https://qiita.com/nukash/items/cd3a010c0146a51aa30a -
WindowsコンテナでWordPressを動かすまでに気づいた注意点
https://qiita.com/ko-he-8/items/3bc233eca2a32abc6c63
- あなたの知らないコンテナーの世界(その2):今すぐできるWindows Serverコンテナーの作り方
http://www.atmarkit.co.jp/ait/articles/1509/17/news023.html
-
Windows 上のコンテナーに関するドキュメント
https://learn.microsoft.com/virtualization/windowscontainers/ -
Windows コンテナーの基本イメージ
https://learn.microsoft.com/virtualization/windowscontainers/manage-containers/container-base-images
Tags: 移行, Windows, Hyper-V, 仮想化, コンテナ
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。