Skip to content

MS_DockerForWindows

nishi_74322014 edited this page Aug 12, 2026 · 1 revision

Docker for Windows

概要

Windows 上から、Linux コンテナである Docker(DNET_Docker.md)を
使うための製品

  • Docker Toolbox(2015/8/12 リリース)から、ひたすら進化を続けている。
  • 読んで字の如く Windows から Docker を利用するプロダクト
  • 色々あって(、進化の中で十徳ナイフ化し)、入門者には理解が難しい。
    • 昔は、Windows Server コンテナに関しては
      フロント機能しか持っていなかった。
    • 昨今では、Windows Server コンテナの機能も統合されるに至った。

詳細

変遷

Docker Toolbox

  • Windows 7 からは Docker for Windows を利用できないので、Docker Toolbox を利用する。
  • Docker Toolbox は、VirtualBox の中で Linux コンテナを動作させる
    というアーキテクチャ

Docker for Windows

Docker Toolbox の後継で、Windows 上から
Windows コンテナ や Linux コンテナ(Docker)を使うためのフロントエンド製品

  • Windows のコンテナ
  • Linux コンテナ
    • Hyper-V コンテナ上の Docker のフロントエンド

Desktop with integrated Kubernetes

18.02.0-ce 以降

  • 正式には、Docker for Windows Desktop with integrated Kubernetes らしい。
  • 読んで字の如く Docker for Windows 上の Linux コンテナで K8s を実行できるようになる。
  • 2.0.0.2 から Docker Desktop for Windows にリネームされた。
  • 以下が可能になる。
    • Windows Server コンテナ自体を実行可能
    • WSL2上で Docker を実行可能

Docker Desktop WSL2 Backend

更に、WSL2 上で Docker を動作することができるよう進化。

補足(この変遷を 1 表で): 「十徳ナイフ化して分かりにくい」という
指摘のとおりなので、Linux コンテナをどこで動かしているかという
軸で整理する。

世代 Linux カーネルの実体 性能・使い勝手
Docker Toolbox VirtualBox の VM 遅い。ファイル共有が苦しい
Docker for Windows Hyper-V の MobyLinuxVM 改善。ただし Hyper-V 必須(Home 不可)
WSL2 Backend WSL2 の軽量 VM 最も速い。Home でも可

「どこかに Linux カーネルが必要」という原則
コンテナ技術を参照)は一貫しており、
その置き場所が VirtualBox → Hyper-V → WSL2 と移ってきた
と理解すればよい。

周辺ツール

  • Visual Studio Tools for Docker(MS_VSToolsForDocker.md
  • Visual Studio Kubernetes Tools(MS_VSKubernetesTools.md
  • Visual Studio Code Docker extension(Visual Studio Code

インストールと利用

インストール

ザックリ、以下の手順でインストールできる。

  1. 事前に Hyper-Vを有効化しておく
  2. https://www.docker.com/products/docker-desktop からダウンロード
  3. インストーラを使用して、インストールすれば OK。

補足(現在は Hyper-V の事前有効化は不要): 現在の
Docker Desktop
WSL2 バックエンドが既定であり、

  • Hyper-V の有効化は不要(「仮想マシン プラットフォーム」だけでよい)
  • Windows Home Edition でも動作する

ようになっている。上記手順は Hyper-V バックエンド時代のものである。

コンテナ操作

# コンテナを探す
docker ps

# コンテナに接続
docker exec -it <containerName> /bin/bash

# コンテナ上のファイルをローカルに保存する
docker cp <containerName>:/usr/local/apache2/logs/httpd.pid C:\Users\user\Documents

# ローカルファイルをコンテナ上にコピーする
docker cp C:\Users\user\Documents\mod_httpd.pid <containerName>:/usr/local/apache2/logs/

補足(docker execdocker attach の違い): 混同されやすいので
整理しておく。

コマンド 内容
docker exec -it <c> bash 新しいプロセスを起動して入る。抜けてもコンテナは動き続ける
docker attach <c> PID 1 のプロセスに接続する。Ctrl+Cコンテナが停止する

調査目的なら必ず exec を使う。
attach で抜けようとして本番コンテナを止めてしまう事故が定番である
attach から安全に抜けるには Ctrl+P Ctrl+Q)。

参考

Publickey

@IT

開発基盤部会 Wiki

  • Docker(DNET_Docker.md
  • Dockerコマンド(DNET_DockerCommand.md
  • Dockerファイル(DNET_Dockerfile.md
  • Dockerコンポーズ(DNET_DockerCompose.md
  • Dockerレジストリ(DNET_DockerRegistry.md

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

NetDevInfraWiki

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

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally