Docker Desktop エンジンでコンテナタイプを切り替える方法

DockerDockerBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、docker desktop engine useコマンドを使用してコンテナタイプを切り替える方法を学びます。まず Docker エンジンの目的と現在のコンテナタイプを確認する方法から始めます。

その後、Windows システム上で Windows コンテナに切り替え、その後 Linux コンテナに戻す方法を探求します。このチャレンジでは、Docker CLI を使用してコンテナ環境を管理する実践的な経験を得ることができます。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") docker/SystemManagementGroup -.-> docker/info("Display System-Wide Information") subgraph Lab Skills docker/run -.-> lab-555142{{"Docker Desktop エンジンでコンテナタイプを切り替える方法"}} docker/pull -.-> lab-555142{{"Docker Desktop エンジンでコンテナタイプを切り替える方法"}} docker/info -.-> lab-555142{{"Docker Desktop エンジンでコンテナタイプを切り替える方法"}} end

docker desktop engine use の目的を理解する

このステップでは、Docker エンジンの目的について理解します。Docker は、コンテナ化技術を使用してアプリケーションのデプロイ、スケーリング、管理を自動化するプラットフォームです。コンテナとは、コードとその依存関係をパッケージ化したソフトウェアの標準単位であり、アプリケーションを異なるコンピューティング環境間で高速かつ確実に実行できるようにします。

Docker エンジンは Docker のコアコンポーネントです。これはクライアント - サーバー型アプリケーションで、以下の主要な要素で構成されています:

  • サーバー(dockerdコマンドとして知られるデーモンプロセス)
  • デーモンと通信し指示を出すためのインターフェースを定義する REST API
  • コマンドラインインターフェース (CLI) クライアント(dockerコマンド)

CLI は REST API を使用して、スクリプティングまたは直接の CLI コマンドを通じて Docker デーモンを制御します。多くの他の Docker アプリケーションも、この基盤となる API と CLI を利用しています。

LabEx 環境では、Docker エンジンは既にインストールされ実行されています。これはdocker infoコマンドを実行することで確認できます。このコマンドは Docker インストールに関するシステム全体の情報を表示します。

docker info

次のような出力が表示され、Docker のバージョン、ストレージドライバーなどの詳細が確認できます。

Client:
 Version:           20.10.21
 API version:       1.41
 Go version:        go1.18.9
 Git commit:        baeda1f
 Built:             Tue Oct 25 18:01:17 2022
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server:
 Engine:
  Version:          20.10.21
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.18.9
  Git commit:       305620d
  Built:            Tue Oct 25 17:59:50 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.10
  GitCommit:        b34a5c8e5367b9d7e345e9371193898cdce23f40
 runc:
  Version:          1.1.4
  GitCommit:        v1.1.4-0-g5fd4c4d
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0
 ... (more output)

この出力は Docker エンジンが実行中であることを確認し、その設定に関する詳細を提供します。Docker エンジンを理解することは、コンテナを扱う最初のステップです。

現在のコンテナタイプを確認する

このステップでは、LabEx 環境で Docker エンジンがサポートしている現在のコンテナタイプを確認します。Docker は基盤となるオペレーティングシステムに応じて異なるタイプのコンテナを実行できます。Linux では主に Linux コンテナを実行し、Windows では Docker Desktop を使用して Linux コンテナと Windows コンテナを切り替えることが可能です。

LabEx 環境では Linux 仮想マシン上で動作しているため、Docker エンジンは Linux コンテナを実行するように設定されています。これはdocker infoコマンドの出力を再度確認することで確認できます。OSTypeフィールドを探してください。

docker info

出力には次のような行が表示されるはずです:

OSType: linux

これは Docker エンジンが現在 Linux コンテナを実行するように設定されていることを示しています。これは Linux システム上でのデフォルトかつ期待される動作です。

さらに説明するために、簡単な Linux コンテナを実行してみましょう。hello-worldイメージを使用します。これは単純なメッセージを表示して終了する非常に小さなイメージです。まず、イメージをローカルマシンにプルする必要があります。

docker pull hello-world

イメージがプルされダウンロードされていることを示す出力が表示されるはずです。

Using default tag: latest
latest: Pulling from library/hello-world
2db29710123e: Pull complete
Digest: sha256:f5233545e4356188889a389e18b407cd9f61f46056b1e172b338cd91f09e9e4c
Status: Downloaded newer image for hello-world:latest
docker.io/library/hello-world:latest

次に、docker runコマンドを使用してコンテナを実行します。

docker run hello-world

次のような出力が表示され、hello-worldコンテナによって出力されたメッセージを確認できます。

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
    (assuming it was not already locally available).
 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

これにより、この環境で Linux コンテナを正常に実行できることが確認できました。

Windows コンテナへの切り替え(Windows のみ)

このステップでは、Windows コンテナへの切り替えについて説明します。この操作は Windows オペレーティングシステムで Docker Desktop を実行している場合のみ適用可能です。LabEx 環境は Linux 仮想マシンであるため、実際にここで切り替えを行うことはできません。ただし、Windows で Docker を扱う場合にこの概念を理解することは重要です。

Windows では、Docker Desktop はデフォルトで小さな Linux 仮想マシンを実行し、Docker エンジンをホストして Linux コンテナを実行します。これは、コアとなる Docker エンジンが元々 Linux 向けに設計されていたためです。しかし、Windows はネイティブの Windows コンテナの実行もサポートしています。

Docker Desktop がインストールされた Windows マシン上では、通常、システムトレイの Docker アイコンを右クリックし、「Switch to Windows containers」を選択することで Windows コンテナに切り替えます。この操作により、Docker デーモンが Linux VM ではなく Windows コンテナランタイムを使用するように再構成されます。

Windows コンテナに切り替えた後は、mcr.microsoft.com/windows/nanoserverなど、Windows 向けにビルドされたイメージをプルして実行できるようになります。

例えば、Windows マシンで切り替えた後、次のように実行できます:

docker pull mcr.microsoft.com/windows/nanoserver
docker run mcr.microsoft.com/windows/nanoserver cmd /c echo Hello from Windows Container!

出力は次のようになります:

Hello from Windows Container!

現在 Linux 環境にいるため、Windows コンテナイメージのプルや実行は失敗します。この Linux VM 内の Docker エンジンは Windows コンテナを実行できません。

Windows イメージをプルしようとしてこれを実証してみましょう。

docker pull mcr.microsoft.com/windows/nanoserver

おそらく、イメージが見つからないかプルできないことを示すエラーメッセージが表示されます。Docker デーモンはその名前の Linux イメージを探しているためです。

Using default tag: latest
Error response from daemon: manifest for mcr.microsoft.com/windows/nanoserver:latest not found: manifest unknown: manifest unknown

これにより、現在の環境が Linux コンテナ用に設定されており、Windows コンテナを実行できないことが確認できます。

したがって、この LabEx 環境で Windows コンテナに切り替えるための実用的なコマンドはありません。このステップは、Windows で Docker を扱う可能性のあるユーザー向けの概念的な情報として提供されています。

Linux コンテナへ戻す(Windows のみ)

このステップでは、Linux コンテナへ戻す方法について説明します。前のステップと同様に、これは Windows オペレーティングシステムで Docker Desktop を使用している場合にのみ関係します。LabEx の Linux 環境では既に Linux コンテナを使用しているため、戻すための操作は必要ありません。

Windows コンテナに切り替えた Windows マシンでは、システムトレイの Docker アイコンを右クリックし、「Switch to Linux containers」を選択することで Linux コンテナに戻すことができます。この操作により、Windows コンテナランタイムが停止し、Linux コンテナ用の Docker エンジンをホストする Linux 仮想マシンが再起動します。

Windows マシンで Linux コンテナに戻した後は、再びubuntuイメージなどの Linux コンテナイメージをプルして実行できるようになります。

例えば、Windows マシンで切り替え後に次のように実行できます:

docker pull ubuntu
docker run ubuntu echo Hello from Linux Container!

出力は次のようになります:

Hello from Linux Container!

現在 Linux 環境にいるため、既に Linux コンテナを使用していますdocker infoの出力でOSTypeを確認することで、これを再度確認できます。

docker info

ステップ 2 で見たように、出力には次のように表示されます:

OSType: linux

これにより、この LabEx 環境の Docker エンジンが Linux コンテナを実行するように設定されており、戻すための操作が必要ないことが確認できます。

したがって、この LabEx 環境で Linux コンテナに戻すための実用的なコマンドはありません。このステップは前のステップと同様に、Windows で Docker を扱う可能性のあるユーザー向けの概念的な情報として提供されています。

まとめ

この実験では、まずコンテナ化のための Docker プラットフォームの中核コンポーネントである Docker エンジンの目的を理解しました。Docker エンジンはデーモンプロセス、REST API、およびコマンドラインインターフェース(CLI)で構成されていることを学びました。docker infoコマンドを使用して Docker のインストール状況と実行状態を確認し、Docker 環境に関する詳細なシステム全体の情報を取得しました。

基本的な理解を得た後、Docker エンジンが現在使用しているコンテナタイプを確認しました。Windows ユーザー向けに、コンテナタイプを Windows コンテナに切り替える手順と、その後 Linux コンテナに戻す手順を説明し、Docker Desktop 内で異なるコンテナ環境を管理する方法を実演しました。