Dockerは、ソフトウェア開発ソリューションを提供するリーダーとなり、コンテナを使用してアプリケーションの開発、テスト、デプロイ、および実行のプロセスを簡素化するツールを提供しています。 そのため、 Docker Desktop などの Docker のさまざまな製品や Docker Engine などのコンポーネントを理解し、それらがどのように連携するかを理解することは、生産性を最大化し、Docker のライセンス条項への準拠を確保しようとする開発者にとって不可欠です。
この投稿では、Docker Desktop と Docker Engine の違いと類似点を明確にし、エクスペリエンスを最大限に活用できるように、現在どちらを使用しているかを確認するためのガイダンスを提供します。
Docker Desktop と Docker Engine のインストールを区別する方法、追加の Docker ツールがいつ使用されているかを特定する方法、Docker コンテキストを理解する方法、Docker の使用状況を確認して Docker ライセンス契約に準拠していることを確認する方法については、以下をお読みください。
バックグラウンド
「Docker」という言葉はコンテナ化と同義語になり、アプリケーションのコンテナ化がアプリケーションの「Docker化」と呼ばれることが増えています。 Dockerは コンテナ化を生み出さなかったが、同社はこのテクノロジーをわかりやすいツールとアーティファクトのセットで開発者コミュニティにもたらした最初の企業だった。
2015年、Dockerは次のステップに進み、Open Container Initiative(OCI)を作成して、コンテナイメージの構築方法、コンテナイメージの実行方法、およびコンテナイメージの共有方法を定義および指定しました。OCIをLinux Foundationに寄贈することで、Dockerはコンテナテクノロジーのあらゆるアプリケーションに公平な競争の場を提供しました。
Dockerが率いるオープンソースの取り組みは、 Moby Projectです。 Dockerは、車輪の再発明をすることなく、特殊なコンテナシステムを組み立てるために、このオープンフレームワークを作成しました。 数十の標準コンポーネントのビルディングブロックセットと、それらをカスタムプラットフォームに組み立てるためのフレームワークを提供します。
Moby は、コンテナー エンジン、コンテナー ランタイム、ネットワーク、ストレージ、オーケストレーション システムなど、いくつかのコンポーネントで構成されています。 スタンドアロンの無料 Docker Engine (Docker Community Edition または Docker CE とも呼ばれます) と商用の Docker Desktop は、どちらも Moby Project から生まれました。 しかし、Docker DesktopはMoby Projectを超えて進化し、製品チーム全体が個々の開発者、小規模なチーム、および大規模な開発チームの要件をサポートするための機能とテクノロジーに投資しています。
Docker Engine と Docker Desktop の比較
Docker Desktop は、Docker, Inc. が販売およびサポートする商用製品です。 これには、Docker Engine とその他のオープン ソース コンポーネントが含まれます。プロプライエタリコンポーネント;また、直感的なGUI、同期されたファイル共有、クラウドリソースへのアクセス、デバッグ機能、ネイティブホスト統合、ガバナンス、ECI、エアギャップコンテナ、管理設定管理をサポートするセキュリティ機能などの機能も備えています。 異なるオペレーティングシステム間で一貫したユーザーエクスペリエンスを提供するために、Docker Desktopはホストシステムのネイティブ仮想化を使用して、DockerエンジンのVMを実行および管理します。 これにより、開発者は、あらゆるデバイスやオペレーティングシステムでコンテナ化ツールセットを実行するためのターンキーソリューションを得ることができます。 ユーザーは、Docker Desktopをダウンロードすることで、あらゆるプラットフォームでDocker Engineをコアとして活用できます。
Docker Engine は、Docker Desktop の一部としてではなく、個別に無料でダウンロードできるコンポーネントであり、スタンドアロンとして無料で実行されます。 サポートされている任意のLinuxディストリビューションで実行でき、コマンドを実行するための DockerCLI が含まれています。 Docker EngineはWindowsやmacOSではネイティブに動作せず、GUIやDocker Desktopが提供する高度な機能は付属していません。
Docker Desktop を実行しているのか、Docker Engine だけを実行しているのかは、どうすればわかりますか?
Docker Desktop と Docker Engine のどちらを使用しているかは、さまざまな方法で判断できます。 次のセクションでは、ファイルシステムと、Docker Desktop のコンポーネントでもある Docker CLI ツール内からチェックするためのガイダンスを提供します。
1. GUI またはアイコン
Docker Desktop を使用している場合は、ウィンドウ化された GUI またはクジラのメニューバー/タスクバー アイコンが表示されます (図 1)。
2. インストールの確認
Docker Desktop を確認する最も簡単な方法は、インストールを探すことです。これは、スクリプトまたはMDMソリューションを使用して自動化できます。
次の手順では、Docker Desktop が既定の場所にインストールされていることを前提としているため、他のインストール パスを使用すると偽陰性が発生する可能性があることに注意してください。
macOS上のDocker Desktop
macOSでは、 Docker Desktop アプリケーションはディレクトリ /Applications
の下にインストールされ、名前が付けられ Docker
ます(図 2)。
$ ls -alt /Applications/Docker.app/
total 0
drwxrwxr-x 49 root admin 1568 Oct 13 09:54 ..
drwxr-xr-x@ 9 jschmidt admin 288 Sep 28 15:36 Contents
drwxr-xr-x@ 3 jschmidt admin 96 Sep 8 02:35 .
Windows 上の Docker Desktop
Windows では、 Docker Desktop アプリケーションはフォルダ C:\Program Files
の下にインストールされ、 という名前が付けられ Docker
ます (図 3)。
C:\Users\qdzlug>dir "c:\Program Files\Docker"
Volume in drive C has no label.
Volume Serial Number is DEFE-FC15
Directory of c:\Program Files\Docker
09/28/2023 02:22 PM <DIR> .
09/28/2023 02:22 PM <DIR> ..
09/28/2023 02:22 PM <DIR> cli-plugins
09/28/2023 02:21 PM <DIR> Docker
0 File(s) 0 bytes
4 Dir(s) 52,964,356,096 bytes free
C:\Users\qdzlug>
Linux 上の Docker Desktop
Linuxでは、 Docker Desktop アプリケーションは にインストールされます /opt/docker-desktop
。
$ ls -lat /opt/docker-desktop/
total 208528
drwxr-xr-x 7 root root 4096 Sep 29 10:58 .
drwxr-xr-x 2 root root 4096 Sep 29 10:58 locales
drwxr-xr-x 5 root root 4096 Sep 29 10:58 resources
drwxr-xr-x 2 root root 4096 Sep 29 10:58 share
drwxr-xr-x 2 root root 4096 Sep 29 10:58 linuxkit
drwxr-xr-x 2 root root 4096 Sep 29 10:58 bin
drwxr-xr-x 7 root root 4096 Sep 29 10:57 ..
-rw-r--r-- 1 root root 5313018 Sep 27 12:10 resources.pak
-rw-r--r-- 1 root root 273328 Sep 27 12:10 snapshot_blob.bin
-rw-r--r-- 1 root root 588152 Sep 27 12:10 v8_context_snapshot.bin
-rw-r--r-- 1 root root 107 Sep 27 12:10 vk_swiftshader_icd.json
-rw-r--r-- 1 root root 127746 Sep 27 12:10 chrome_100_percent.pak
-rw-r--r-- 1 root root 179160 Sep 27 12:10 chrome_200_percent.pak
-rwxr-xr-x 1 root root 1254728 Sep 27 12:10 chrome_crashpad_handler
-rwxr-xr-x 1 root root 54256 Sep 27 12:10 chrome-sandbox
-rw-r--r-- 1 root root 398 Sep 27 12:10 componentsVersion.json
-rwxr-xr-x 1 root root 166000248 Sep 27 12:10 'Docker Desktop'
-rw-r--r-- 1 root root 10544880 Sep 27 12:10 icudtl.dat
-rwxr-xr-x 1 root root 252920 Sep 27 12:10 libEGL.so
-rwxr-xr-x 1 root root 2877248 Sep 27 12:10 libffmpeg.so
-rwxr-xr-x 1 root root 6633192 Sep 27 12:10 libGLESv2.so
-rwxr-xr-x 1 root root 4623704 Sep 27 12:10 libvk_swiftshader.so
-rwxr-xr-x 1 root root 6402632 Sep 27 12:10 libvulkan.so.1
-rw-r--r-- 1 root root 1096 Sep 27 12:10 LICENSE.electron.txt
-rw-r--r-- 1 root root 8328249 Sep 27 12:10 LICENSES.chromium.html
Dockerの起動アイコンと場所は、使用されているLinuxディストリビューションによって異なることに注意してください。
3. 実行中のインストールを確認する
また、実行中のインストールを確認して、使用されている Docker のバージョンを確認することもできます。 これを行うには、次のコマンドを使用する必要があります docker version
。この Server
行は、使用されているバージョンを示します。
macOS Arm64 上の Docker Desktop
この行は Server: Docker Desktop 4.24.0 (122432)
、Docker Desktop を使用していることを示しています。
$ docker version
Client:
Cloud integration: v1.0.35+desktop.5
Version: 24.0.6
API version: 1.43
Go version: go1.20.7
Git commit: ed223bc
Built: Mon Sep 4 12:28:49 2023
OS/Arch: darwin/arm64
Context: default
**Server: Docker Desktop 4.24.0 (122432)**
Engine:
Version: 24.0.6
API version: 1.43 (minimum version 1.12)
Go version: go1.20.7
Git commit: 1a79695
Built: Mon Sep 4 12:31:36 2023
OS/Arch: linux/arm64
Experimental: true
containerd:
Version: 1.6.22
GitCommit: 8165feabfdfe38c65b599c4993d227328c231fca
runc:
Version: 1.1.8
GitCommit: v1.1.8-0-g82f18fe
docker-init:
Version: 0.19.0
GitCommit: de40ad0
Windows 上の Docker Desktop
この行は Server: Docker Desktop 4.24.0 (122432)
、Docker Desktop を使用していることを示しています。
C:\Users\qdzlug>docker version
Client:
Cloud integration: v1.0.35+desktop.5
Version: 24.0.6
API version: 1.43
Go version: go1.20.7
Git commit: ed223bc
Built: Mon Sep 4 12:32:48 2023
OS/Arch: windows/amd64
Context: default
**Server: Docker Desktop 4.24.0 (122432)**
Engine:
Version: dev
API version: 1.44 (minimum version 1.12)
Go version: go1.20.8
Git commit: HEAD
Built: Tue Sep 26 11:52:32 2023
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.22
GitCommit: 8165feabfdfe38c65b599c4993d227328c231fca
runc:
Version: 1.1.8
GitCommit: v1.1.8-0-g82f18fe
docker-init:
Version: 0.19.0
GitCommit: de40ad0
C:\Users\qdzlug>
Linux 上の Docker Desktop
この行は Server: Docker Desktop 4.31.0 (153195)
、Docker Desktop を使用していることを示しています。
Client:
Version: 26.1.4
API version: 1.45
Go version: go1.22.3
Git commit: 5650f9b102
Built: Thu Jun 6 18:42:55 2024
OS/Arch: linux/amd64
Context: desktop-linux
Server: Docker Desktop 4.31.0 (153195)
Engine:
Version: 26.1.4
API version: 1.45 (minimum version 1.24)
Go version: go1.21.11
Git commit: de5c9cf
Built: Wed Jun 5 11:29:22 2024
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.33
GitCommit: d2d58213f83a351ca8f528a95fbd145f5654e957
runc:
Version: 1.1.12
GitCommit: v1.1.12-0-g51d5e94
docker-init:
Version: 0.19.0
GitCommit: de40ad0
Linux 上の Docker エンジン
この行は Server: Docker Engine - Community
、コミュニティ版を使用していることを示しています。
$ docker version
Client: Docker Engine - Community
Cloud integration: v1.0.35+desktop.5
Version: 24.0.6
API version: 1.43
Go version: go1.20.7
Git commit: ed223bc
Built: Mon Sep 4 12:31:44 2023
OS/Arch: linux/amd64
Context: default
**Server: Docker Engine - Community**
Engine:
Version: 24.0.6
API version: 1.43 (minimum version 1.12)
Go version: go1.20.7
Git commit: 1a79695
Built: Mon Sep 4 12:31:44 2023
OS/Arch: linux/amd64
Experimental: true
containerd:
Version: 1.6.24
GitCommit: 61f9fd88f79f081d64d6fa3bb1a0dc71ec870523
runc:
Version: 1.1.9
GitCommit: v1.1.9-0-gccaecfc
docker-init:
Version: 0.19.0
GitCommit: de40ad0
Docker コンテキスト
複数のコンテキストをシステムにインストールできることに注意してください。これは、Docker Desktop と Docker Engine が同じホストにインストールされている Linux で最もよく見られます。 この 2 つを切り替えるには、 docker context use
次のコマンドを使用します。 コンテキスト内では、そのコンテキストのデーモンと通信します。したがって、デュアルインストールの状況では、Docker Desktopのインストールとホストのインストールを切り替えることになります。
コンテキストを表示するには、 を使用してdocker context ls
docker context use CONTEXTNAME
から切り替えます。次の例は、両方がインストールされた Linux システムを示しています。
$ docker context ls
NAME TYPE DESCRIPTION DOCKER ENDPOINT KUBERNETES ENDPOINT ORCHESTRATOR
default * moby Current DOCKER_HOST based configuration unix:///var/run/docker.sock
desktop-linux moby Docker Desktop unix:///home/jschmidt/.docker/desktop/docker.sock
$ docker version
Client: Docker Engine - Community
Cloud integration: v1.0.35+desktop.5
Version: 24.0.6
API version: 1.43
Go version: go1.20.7
Git commit: ed223bc
Built: Mon Sep 4 12:31:44 2023
OS/Arch: linux/amd64
Context: default
Server: Docker Engine - Community
Engine:
Version: 24.0.6
API version: 1.43 (minimum version 1.12)
Go version: go1.20.7
Git commit: 1a79695
Built: Mon Sep 4 12:31:44 2023
OS/Arch: linux/amd64
Experimental: true
containerd:
Version: 1.6.24
GitCommit: 61f9fd88f79f081d64d6fa3bb1a0dc71ec870523
runc:
Version: 1.1.9
GitCommit: v1.1.9-0-gccaecfc
docker-init:
Version: 0.19.0
GitCommit: de40ad0
$ docker context use desktop-linux
desktop-linux
Current context is now "desktop-linux"
$ docker version
Client: Docker Engine - Community
Cloud integration: v1.0.35+desktop.5
Version: 24.0.6
API version: 1.43
Go version: go1.20.7
Git commit: ed223bc
Built: Mon Sep 4 12:31:44 2023
OS/Arch: linux/amd64
Context: desktop-linux
Server: Docker Desktop 4.24.0 (122432)
Engine:
Version: 24.0.6
API version: 1.43 (minimum version 1.12)
Go version: go1.20.7
Git commit: 1a79695
Built: Mon Sep 4 12:32:16 2023
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.22
GitCommit: 8165feabfdfe38c65b599c4993d227328c231fca
runc:
Version: 1.1.8
GitCommit: v1.1.8-0-g82f18fe
docker-init:
Version: 0.19.0
GitCommit: de40ad0
その他のOCIツール
Docker Engine と Docker Desktop はどちらも OCI に準拠しているため、Docker の "直接の代替品" として多くのソリューションが提示され、インストールされます。 このプロセスでは、通常、コマンドを docker
エミュレートするためのヘルパーエイリアス、スクリプト、またはバッチプログラムを作成します。
エイリアスを確認するには、コマンド alias docker
を実行してエイリアスが設定されているかどうかを確認します。 これは、Linux と macOS、または Windows 上の WSL2 内の Linux ディストリビューションに当てはまります。
$ alias docker # Docker aliased to podman
docker='podman'
$ alias docker # No alias present
また、CLI からバイナリを docker
一覧表示して、公式の Docker バイナリであることを確認することもできます。
$ ls -l `which docker` # Docker supplied by Homebrew on the Mac
lrwxr-xr-x 1 jschmidt admin 34 Apr 2 12:03 /opt/homebrew/bin/docker -> ../Cellar/docker/26.0.0/bin/docker
$ ls -l `which docker` # Official Docker binary on the Mac
lrwxr-xr-x 1 root wheel 54 Jan 10 16:06 /usr/local/bin/docker -> /Applications/Docker.app/Contents/Resources/bin/docker
結論
今回の調査の締めくくりとして、コンテナ化の旅の一環として使用できる、一般的に「Docker」と呼ばれるオファリングもいくつかあることに注意してください。 この投稿では、Docker Engine と Docker Desktop に焦点を当てました。
この時点で、Docker DesktopインストールとDocker Engineインストールを区別し、コマンド名で docker
他のOCIツールが使用されているタイミングを識別できるはずです。 また、このトピックに関連する Docker コンテキストの概要も理解している必要があります。 最後に、 Dockerライセンス契約 に照らして使用状況を確認してコンプライアンスを確認するか、会社の資格情報でログインして調達したエンタイトルメントにアクセスできる必要があります。
さらに詳しく
- Docker Engine
- Docker Desktop
- Docker Desktop Windows のインストール
- Docker Desktop Linux のインストール
- Docker Desktop Macintosh のインストール
- Docker Newsletter を購読してください。
- Docker デスクトップの最新リリースを入手します。