Windows11 に Docker Desktop for Windows をインストール

Docker Desktop for Windows のインストール・動作確認・アンインストール方法を解説


やりたいこと

  1. Docker Desktop for Windows の導入

環境情報

環境 バージョン
OS Windows 11 Pro 23H2
OS ビルド 22631.3527
Git for Windows 2.45.0.windows.1
WSL 2.1.5.0
Ubuntu 22.04.4 LTS
Windows Terminal 1.19.11213.0
Visual Studio Code 1.88.1
docker desktop v4.29.0
docker 26.0.0
docker-compose v2.26.1-desktop.1

2024-05-05 現在


前提条件

Windows11 WSL Ubuntu VSCode Git GitHub 環境構築 を実施済み

WSL 環境で Docker Desktop for Windows を使えるようにするためには、
先に WSL Ubuntu をセットアップしておくほうが良い


Docker Desktop for Windows インストール

インストールウィザード:

  • Use WSL 2 instead of Hyper-V (recommended)
    Hyper-V の代わりに WSL2 を使う(推奨)をオン
    • Home版ではHyper-Vが使えないので、このオプションは表示されない
  • Add shortcut to desktop
    デスクトップにショートカットが欲しい場合はオン
  • OK でインストール開始
  • Close で完了

Docker Desktop for Windows 初回起動

  • Docker Subscription Service Agreement → Accept
    有料サブスクリプションサービスについて→承認
    • この契約書は、主に企業やビジネス向けの契約書であり、個人利用にはあまり関係がない
  • Continue without signing in
    Docker ID アカウントにサインインせず続ける
    • サインインしてもいい
  • Welcome Servey → Skip Servey
    調査 → スキップする
    • 答えてもいい

サインインするメリット:

  • Docker Desktop から Docker Hub リポジトリに直接アクセスできる
  • 6時間あたり200回のダウンロードが可能
    (サインインしない場合、6時間あたり100回のダウンロードが可能)
  • Hardened Desktopを活用することで、コンテナ開発における組織のセキュリティ体制を強化できる
    (個人には関係ない)

情報源:Sign in to Docker Desktop | Docker Docs


Docker Desktop for Windows 設定

  • General
    • Send usage statistics -> オフ
      エラー レポート、システムのバージョンと言語、および Docker Desktop のライフサイクル情報 (開始、停止、リセットなど) を送信
  • Notifications
    不要な通知をオフにする
    個人的には、Docker Desktop の新しいリリースやアップデートに関する通知を受け取るために、調査だけオフ
    • Status updates on tasks and processes
    • Recommendations from Docker
    • Docker announcements
    • Docker surveys → オフ

docker動作確認(Windows)

hello-world を使ってDockerの動作確認を簡単に行う

情報源:docker | Docker Docs


1. PowerShell (Windows Terminal) を開く

Windwos Terminal で PowerShell を開く

2. docker のバージョン確認

1
docker --version

実行結果(例):

1
Docker version 26.0.0, build 2ae903e

3. docker-compose のバージョン確認

1
docker compose version

実行結果(例):

1
Docker Compose version v2.26.1-desktop.1

4. docker buildx のバージョン確認

1
docker buildx version

実行結果(例):

1
github.com/docker/buildx v0.13.1-desktop.1 2368b2ee41873b948cb607251cec573ed00f00f9

5. Dockerイメージのリストを表示

1
docker image ls

エイリアス↓ 通常はこちらを使う

1
docker images

実行結果:

1
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE

Dockerイメージは一つもない

6. Docker Desktop → Images を確認

Dockerイメージは一つもない

7. Dockerコンテナの一覧を表示

-a はすべてのコンテナを表示するオプション(デフォルトは実行中のみを表示)

1
docker container ls -a

エイリアス↓ 通常はこちらを使う

1
docker ps -a

実行結果:

1
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

Dockerコンテナは一つもない

8. Docker Desktop → Containers を確認

Dockerコンテナは一つもない

9. hello-world コンテナを実行

1
docker run hello-world

実行結果(原文):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
c1ec31eb5944: Pull complete
Digest: sha256:a26bff933ddc26d5cdf7faa98b4ae1e3ec20c4985e6f87ac0973052224d24302
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

実行結果(翻訳):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
画像「hello-world:latest」がローカルに見つからない
最新の library/hello-world から引っ張ってくる
c1ec31eb5944: プル完了
Digest: sha256:a26bff933ddc26d5cdf7faa98b4ae1e3ec20c4985e6f87ac0973052224d24302
ステータス hello-world:latestの新しいイメージをダウンロードしました。

Dockerからこんにちは!
このメッセージは、インストールが正常に動作していることを示しています。

このメッセージを生成するために、Dockerは以下のステップを踏みました:
 1. DockerクライアントがDockerデーモンにコンタクトした。
 2. DockerデーモンがDocker Hubから "hello-world "イメージを取り出した。
    (amd64)
 3. Dockerデーモンは、そのイメージから新しいコンテナを作成し、そのコンテナで以下を実行する。
    実行ファイルを実行する。
 4. Dockerデーモンはその出力をDockerクライアントにストリーミングし、Dockerクライアントはそれをあなたのターミナルに送信する。
    に送る。

もっと野心的なことを試すには、以下のようにしてUbuntuコンテナを実行できる:
 docker run -it ubuntu bash

無料のDocker IDを使って、イメージの共有やワークフローの自動化などを行おう:
 https://hub.docker.com/

その他の例やアイデアについては、以下をご覧ください:
 https://docs.docker.com/get-started/

10. Docker Desktop → Images, Containers を確認

Hello World の Docker イメージとコンテナが存在することを確認


docker動作確認(WSL Ubuntu)

Windows 側で動作確認した hello-world を WSL Ubuntu 側から削除する

情報源:docker | Docker Docs


11. 再度、Dockerイメージのリストを表示

1
docker images

実行結果(例):

1
2
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
hello-world   latest    d2c94e258dcb   12 months ago   13.3kB

12. 再度、Dockerコンテナの一覧を表示

1
docker ps -a

実行結果(例):

1
2
CONTAINER ID   IMAGE         COMMAND    CREATED              STATUS                          PORTS     NAMES
2ea0b80bd73e   hello-world   "/hello"   About a minute ago   Exited (0) About a minute ago             keen_rhodes

13. Dockerイメージを削除

<IMAGE> には、docker imagesで取得した IMAGE ID を指定する

1
docker image rm <IMAGE>

エイリアス↓ 通常はこちらを使用

1
docker rmi <IMAGE>

hello-world のイメージIDを指定して実行:

1
docker rmi d2c94e258dcb

実行結果:

1
Error response from daemon: conflict: unable to delete d2c94e258dcb (must be forced) - image is being used by stopped container 0a1955e4785b

エラーメッセージ:Dockerイメージを削除するためには、このDockerイメージで構築されたDockerコンテナを先に削除しなければならない

14. Docker Desktop → Image から hello-world を削除

手順13.と同様の理由で削除できない

15. Dockerコンテナを削除

<CONTAINER> には、docker ps -aで取得した CONTAINER ID または NAMES を指定する

1
docker container rm <CONTAINER>

エイリアス↓ 通常はこちらを使う

1
docker rm <CONTAINER>

hello-world のコンテナIDを指定して実行:

1
docker rm 2ea0b80bd73e

実行結果:

1
2ea0b80bd73e

16. hello-world のDockerコンテナが削除されたのを確認

1
docker ps -a

実行結果:

1
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

17. Docker Desktop → Containers で hello-world が削除されたのを確認

コンテナが一つもないことを確認

18. 今度こそ hello-world のDockerイメージを削除

1
docker rmi d2c94e258dcb

実行結果(例):

1
2
3
4
Untagged: hello-world:latest
Untagged: hello-world@sha256:a26bff933ddc26d5cdf7faa98b4ae1e3ec20c4985e6f87ac0973052224d24302
Deleted: sha256:d2c94e258dcb3c5ac2798d32e1249e42ef01cba4841c2234249495f87264ac5a
Deleted: sha256:ac28800ec8bb38d5c35b49d45a6ac4777544941199075dff8c4eb63e093aa81e

19. hello-world のDockerイメージが削除されたのを確認

1
docker images

実行結果:

1
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE

20. Docker Desktop → Image からも hello-world が削除されたのを確認

イメージが一つもないことを確認


WSL の既定ディストリビューションの設定

WSL の確認:

1
wsl --list

WSLのディストリビューションとして以下の2つがインストールされる

  • docker-desktop
  • docker-desktop-data

Docker Desktop をインストールしたあとに Ubuntu をインストールした場合、既定のディストリビューションが、docker-desktop に設定された状態になる

VSCode で開く既定のディストリビューションを普段使用するディストリビューションにしておく

WSL既定のディストリビューションを Ubuntu にするコマンド:

1
wsl --set-default Ubuntu

Docker Desktop for Windows のアンインストール

Docker Desktop をアンインストールする方法

情報源:Uninstall Docker Desktop | Docker Docs


本体のアンインストール

  • 設定
  • アプリ
  • インストールされているアプリ
  • Docker Desktop > アンインストール

手動でファイル削除(Windows)

Docker Desktopをアンインストールした後、手動で削除できるファイルが残っている場合がある

1
2
3
4
5
6
7
C:\ProgramData\Docker
C:\ProgramData\DockerDesktop
C:\Program Files\Docker
C:\Users\<your user name>\AppData\Local\Docker
C:\Users\<your user name>\AppData\Roaming\Docker
C:\Users\<your user name>\AppData\Roaming\Docker Desktop
C:\Users\<your user name>\.docker

管理者権限で PowerShell を開き、コマンドを実行

1
2
3
4
5
6
7
8
Remove-Item -Recurse -Force -Path `
"C:\ProgramData\Docker", `
"C:\ProgramData\DockerDesktop", `
"C:\Program Files\Docker", `
"$env:USERPROFILE\AppData\Local\Docker", `
"$env:USERPROFILE\AppData\Roaming\Docker", `
"$env:USERPROFILE\AppData\Roaming\Docker Desktop", `
"$env:USERPROFILE\.docker"

手動でファイル削除(WSL)

  1. Docker Desktop for Windows を使っていたけれどアンインストール
  2. WSL Ubuntu に Docker CE をインストール

という状況の場合、Ubuntu の Docker CE ではなく Docker Desktop for Windows のコマンドを使おうとするためdocker コマンドが使えないことがある

この場合は、WSL Ubuntu 内に残っている Docker Desktop for Windows コマンドへのリンクを消せばよい


  1. dockerコマンドのリンクを確認
1
ls -la /usr/local/lib/docker/cli-plugins/

実行結果(例):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
total 44
drwxr-xr-x 2 root root 4096 May  1 20:11 .
drwxr-xr-x 3 root root 4096 May  1 20:11 ..
lrwxrwxrwx 1 root root   80 May  1 20:11 docker-buildx -> /mnt/wsl/docker-desktop/cli-tools/usr/local/lib/docker/cli-plugins/docker-buildx
lrwxrwxrwx 1 root root   81 May  1 20:11 docker-compose -> /mnt/wsl/docker-desktop/cli-tools/usr/local/lib/docker/cli-plugins/docker-compose
lrwxrwxrwx 1 root root   79 May  1 20:11 docker-debug -> /mnt/wsl/docker-desktop/cli-tools/usr/local/lib/docker/cli-plugins/docker-debug
lrwxrwxrwx 1 root root   77 May  1 20:11 docker-dev -> /mnt/wsl/docker-desktop/cli-tools/usr/local/lib/docker/cli-plugins/docker-dev
lrwxrwxrwx 1 root root   83 May  1 20:11 docker-extension -> /mnt/wsl/docker-desktop/cli-tools/usr/local/lib/docker/cli-plugins/docker-extension
lrwxrwxrwx 1 root root   82 May  1 20:11 docker-feedback -> /mnt/wsl/docker-desktop/cli-tools/usr/local/lib/docker/cli-plugins/docker-feedback
lrwxrwxrwx 1 root root   78 May  1 20:11 docker-init -> /mnt/wsl/docker-desktop/cli-tools/usr/local/lib/docker/cli-plugins/docker-init
lrwxrwxrwx 1 root root   78 May  1 20:11 docker-sbom -> /mnt/wsl/docker-desktop/cli-tools/usr/local/lib/docker/cli-plugins/docker-sbom
lrwxrwxrwx 1 root root   79 May  1 20:11 docker-scout -> /mnt/wsl/docker-desktop/cli-tools/usr/local/lib/docker/cli-plugins/docker-scout

  1. docker ディレクトリごとリンクを削除
1
sudo rm -rf /usr/local/lib/docker

関連記事

  1. Windows11 WSL Ubuntu VSCode Git GitHub 環境構築
  2. WSL Ubuntu に Docker CE をインストール