はじめに
この実験では、docker desktop engine use
コマンドを使用してコンテナタイプを切り替える方法を学びます。まず Docker エンジンの目的と現在のコンテナタイプを確認する方法から始めます。
その後、Windows システム上で Windows コンテナに切り替え、その後 Linux コンテナに戻す方法を探求します。このチャレンジでは、Docker CLI を使用してコンテナ環境を管理する実践的な経験を得ることができます。
💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください
この実験では、docker desktop engine use
コマンドを使用してコンテナタイプを切り替える方法を学びます。まず Docker エンジンの目的と現在のコンテナタイプを確認する方法から始めます。
その後、Windows システム上で Windows コンテナに切り替え、その後 Linux コンテナに戻す方法を探求します。このチャレンジでは、Docker CLI を使用してコンテナ環境を管理する実践的な経験を得ることができます。
このステップでは、Docker エンジンの目的について理解します。Docker は、コンテナ化技術を使用してアプリケーションのデプロイ、スケーリング、管理を自動化するプラットフォームです。コンテナとは、コードとその依存関係をパッケージ化したソフトウェアの標準単位であり、アプリケーションを異なるコンピューティング環境間で高速かつ確実に実行できるようにします。
Docker エンジンは Docker のコアコンポーネントです。これはクライアント - サーバー型アプリケーションで、以下の主要な要素で構成されています:
dockerd
コマンドとして知られるデーモンプロセス)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 オペレーティングシステムで 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 オペレーティングシステムで 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 内で異なるコンテナ環境を管理する方法を実演しました。