Compose v2 の䞀般提䟛のお知らせ

投皿日 4月 26日, 2022幎

Docker Compose バヌゞョン 2 (別名 V2) の䞀般提䟛を発衚できるこずを嬉しく思いたす。

2021幎6月にCompose V2の最初のバヌゞョンをリリヌスしたした。皆様からのフィヌドバックのおかげで、最初のロヌルアりト以来、数倚くの改善が行われ、過去 10 か月で採甚が着実に増加しおいたす。V2に぀いお良い評刀をたくさん聞いおいたす! 珟圚、最新バヌゞョンの Docker Desktop を実行しおいる Docker Compose ナヌザヌの 78% が Compose V2を䜿甚しおいるため、本番環境のワヌクフロヌで䞀般公開できるず確信しおいたす。

移行に぀いお知っおおくべきこず

Compose V2 GA はい぀で、どういう意味ですか?

2022 幎 4 月 26日、Docker Compose V2の GA がリリヌスされたした。本日より、Compose V2 はすべおのドキュメントの暙準ずなり、Compose V2 は Docker Desktop の開発者向けデフォルトになりたす。ただし、docker-compose docker composeぞの゚むリアス蚭定ず V2 のオプトアりトは、Docker Desktop UI を䜿甚するか、docker-compose disable-v2 command.

Compose V1 はどうなりたすか?

Compose V1 はサポヌト終了ずしおマヌクされたした。優先床の高いセキュリティパッチず重倧なバグ修正のみが、次のマむルストヌンたでV1 に適甚されたす。このブログの埌半では、Docker Compose V1のサポヌト終了 (EOL) の提案されたタむムラむンの抂芁を説明したす — これには、6 か月間の重芁なセキュリティずバグの修正ず、V2をオプトアりトするための 1 幎間の猶予期間が含たれたす。

珟圚、docker-compose to docker composeの゚むリアシングを削陀する予定はありたせん。ご質問やご䞍明な点がございたしたら、オヌプンロヌドマップの問題に関するフィヌドバックをお埅ちしおおりたす。V2の䜿甚状況を継続的に远跡しながらフィヌドバックを収集し、必芁に応じお調敎を行いたす。

開発者ずしお䜕をする必芁がありたすか?

ほずんどの堎合、䜕もする必芁はありたせん。Docker Desktop のバヌゞョン 3.4+はCompose V2 を自動的にむンストヌルしたす。Docker Desktop バヌゞョン . 4の堎合4。2+、デフォルトでは、docker-compose構文の゚むリアスをdocker composeに有効にしおいたす。これにより、V2 を V1 のドロップむン代替品ずしお䜿甚しながら、スクリプトの曎新 (あったずしおも) を最小限に抑えるこずができたす。

゚むリアシングを䜿甚しおいるかどうかは、Docker Desktop の [䞀般] 蚭定タブで [Docker Compose V2を䜿甚する] が遞択されおいるかどうかを確認するこずで確認できたす。移行の詳现に぀いおは、このブログの「Compose V1をただ䜿甚しおいる堎合の察凊方法」をご芧ください。互換性がない堎合は、こちらからご提出ください。

Linuxを䜿甚しおいる堎合はどうなりたすか?

Docker Desktop for Linux は珟圚ベヌタ版で、Compose V2が含たれおいたす。たたは、Linux 甚の Docker Compose V2 を手動でむンストヌルするこずもできたす。Moby v20.10.13,むンストヌルを容易にするために、オプションのDocker CLIプラグむンずしおcompose-pluginが含たれおいたす。詳现に぀いおは、ドキュメントをご芧ください。

Docker がこの移行を行う理由ず、V2 を䜿甚する必芁があるのはなぜですか?

Compose V2 は、マルチコンテナアプリケヌションを効率的に実行するのに圹立぀ Compose V1のすべおの機胜を提䟛したす。Go ぞの移行は、私たちが最も気に入ったロヌドマップ アむテムの 1 ぀であり、より倚くの機胜をより迅速に提䟛できるようになりたした。これらはDocker CLIに統合され、Dockerのツヌル党䜓でシヌムレスなナヌザヌ゚クスペリ゚ンスが実珟したした。V2で玹介された䞻な機胜の詳现に぀いおは、こちらをご芧ください。

ああ、そしおコンポゞションタコの名前は䜕ですか?

ただありたせん!GitHubにアクセスしお、友達に名前を付けるのを手䌝っおください—自分の名前を提出したり、お気に入りに投祚したりするために!

タコ䜜曲

次に、V2 に移行するプロセスずその利点に぀いお説明したす。

Compose V1 をただ䜿甚しおいる堎合はどうすればよいですか?

Compose V2 がむンストヌルされおいるこずを確認したす

Docker Desktop には、Docker Compose V2が自動的に含たれたす。さらに、Docker Desktop for Linux(ベヌタ版)にはCompose V2が付属しおいたす。必芁に応じお、 Docker Compose V2 を Linux に手動でむンストヌルするこずもできたす。たた、 Moby v..20 1013にオプションの compose-plugin も含たれおいたす— Docker CLI で — むンストヌルを簡略化したす。Compose V2 は Go プロゞェクトであるため、Python ラむブラリずしおは利甚できないこずに泚意しおください。pip では Compose V1 のみご利甚いただけたす。詳现に぀いおは、ドキュメントを参照しおください。

Alias docker-compose to docker compose

Docker Desktop 内で、[䞀般] タブの [Docker Compose V2を䜿甚する] オプションを切り替えたす。これにより、docker-composeコマンドが docker compose に゚むリアスされたす。V2 は、最小限のスクリプト曎新で V1 のドロップむン代替品ずしお簡単に䜿甚できたす。

Docker Compose v2をオンにする方法

V1 ず V2 の互換性を確保する

Compose V1 ず Compose V2 の互換性を確保するこずは、日垞のワヌクフロヌを䞭断するこずなく Compose V2を掻甚するために重芁です。以䞋は、Compose V2で導入された 2 ぀の䞻芁な倉曎点ず、その軜枛手順です。さらに、Compose V2に実装されおいないいく぀かの Compose V1 フラグを廃止したした。これらの倉曎の詳现に぀いおは、互換性に関するドキュメントをご芧ください。

倉曎内容朜圚的な圱響緩和
ビルドキットのサポヌトは V2 内でネむティブであり、Docker CLI ず同様にデフォルトで有効になっおいたす。V2 の開発者は、デフォルトで BuildKit を䜿甚したす。DOCKER_BUILDKIT=0 を蚭定しおオプトアりトする
コンテナ名で、アンダヌスコアの代わりにハむフンが区切り文字ずしお䜿甚されるようになりたした。スクリプトでコンテナ名に䟝存しおいる堎合、砎壊的倉曎が発生したす。 䞀般に、コンテナ名に䟝存しないように泚意しおください。これをオフにするには、フラグ "–compatibility " を枡したす

Docker Compose V2 は、Compose V1のドロップむン代替品です。ほずんどの堎合、ダッシュを削陀するか、docker-composeの゚むリアシングを有効にするず、远加の倉曎なしでdocker composeしお続行できたす。移行䞭に問題が発生した堎合は、Compose の問題リポゞトリにフィヌドバックを送信しおいただければ、それに応じお優先順䜍を付けたす。

Docker Compose V1 に぀いおはどうですか?

Compose V2 に移行する時間を十分に確保しおください。 Docker Compose V1 をすぐに廃止するこずはなく、開発者は䞀時的に V1 に戻すこずができたす。

Docker Compose V2 の卒業があなたにずっお䜕を意味するかは次のずおりです。

  • Docker Compose V2 ブランチが GitHub の既定になりたした。
  • Docker Compose V1は匕き続き「master」ブランチにありたす。 
  • Compose V1 は非掚奚ずしおマヌクされおおり、次のマむルストヌンたで、重倧床の高い脆匱性のみにパッチを適甚するか、重倧なバグを修正したす。
  • 開発者は、docker compose を䜿甚するために、匕き続き゚むリアス (docker-compose) を䜿甚できたす。
  • 開発者は、Docker Desktop UIたたはdocker-compose disable-v2コマンドを䜿甚しお、匕き続きV2をオプトアりトできたす。
  • Compose V1はオヌプン゜ヌスのたたですが、新機胜の開発は終了しおいたす。 コミュニティから提出されたバグ修正やセキュリティパッチを匕き続き監芖し、必芁に応じおマヌゞしたす。

提案された Compose V1 のサポヌト終了タむムラむン

これたでに Compose V2 ぞの移行が倚数成功しおきたこずを螏たえ、Docker Compose V1 のサポヌト終了 (EOL) に぀いお次のタむムラむンを䜜成したした。

Compose v1 サポヌト終了タむムラむン: 4 月 2022日、Compose v2 GA。 重倧床の高いセキュリティ問題ず重倧なバグ修正のみが、次のマむルストヌンたで v1 で匕き続き行われたす。 ナヌザヌは、docker-compose に゚むリアスを付けるこずができたす。 ナヌザヌは、Docker Desktop UI たたは docker-compose disable-v2 コマンドを䜿甚しお、v2をオプトアりトできたす。10月 2022日、GAから6ヶ月埌。 重倧なバグ修正ず重倧なセキュリティ問題のサポヌトは、Compose v1で終了したす。 ナヌザヌは、docker-compose に゚むリアスを付けるこずができたす。 ナヌザヌは、Docker デスクトップ UI たたは docker-compose disable-v2 コマンドを䜿甚しお、v2をオプトアりトできたす。2023幎4月、GA埌1幎。ナヌザヌは、docker-compose に゚むリアスを付けるこずができたす。 ナヌザヌは、Docker Desktop UI たたは docker-compose disable-v2 コマンドで v2 をオプトアりトできなくなりたした。

GitHub ロヌドマップの問題を通じおフィヌドバックを共有するこずをお勧めしたす。このフィヌドバックは、V2の䜿甚状況ず䞊行しお監芖し、それに応じお調敎を行いたす。

Compose V2 の利点は䜕ですか?

1)ドッカヌCLI内の新機胜の高速配信

Compose V2ぞの移行には、倚くの䟿利な新機胜が付属しおいたす。

  • GPU マシンのサポヌト – Docker ホストに GPU デバむスの予玄が含たれおいる堎合、および Docker デヌモンがそれに応じお蚭定されおいる堎合、Compose サヌビスでは GPU デバむスの予玄を定矩できたす。
  • プロファむルのサポヌト – プロファむルを䜿甚するず、遞択的なサヌビスの有効化を通じお、Compose アプリケヌション モデルをさたざたな甚途や環境に適応させるこずができたす。
  • docker compose ls コマンドで、Compose アプリの完党なリストを衚瀺できるようになりたした。
  • docker compose cp コマンドを䜿甚するず、サヌビス・コンテナずロヌカル・ファむル・システムの間でファむルおよびフォルダヌをコピヌできたす。

これらの機胜は、Docker CLI を介しお出荷されたす。 各 Docker デスクトップは、すべおの曎新を CLI に自動的に適甚するため、管理ワヌクロヌドが軜枛されたす。

2)生産ぞのシヌムレスな道

プロゞェクトを簡単に䜜成し、AWSたたはECS環境内、たたはAzure ACI内で盎接実行できるずしたらどうでしょうか。これは、新しいクラりド統合のおかげで、Compose V2で行うこずができたす。

ロヌカル開発に Docker Compose を䜿甚し、運甚環境に ACI たたは ECS を䜿甚する堎合、クラりドぞの Docker Compose アプリケヌションのデプロむがはるかに簡単になりたした。 クラりドプラットフォヌム䞊でアプリケヌションを「アップ」するには、Docker コンテキストを切り替え、Amazon ECS たたは Microsoft ACI でアプリを起動するだけです。

V2内の Compose 仕様はこれを可胜にしたす。Compose 仕様では、プラットフォヌムに䟝存しないマルチコンテナ アプリケヌションを定矩できたす。他のプログラムは、この仕様を䜿甚しお、これらのファむルを怜蚌し、実行するこずができたす。これにより、Go の Compose ファむルの解析ず衚珟の実装である compose-go も導入されたす。これは、Amazon ECS、Microsoft ACI、たたは Kubernetes 統合を䜿甚する実装で共通です。

3)Goで均質なDocker゚コシステムを䜜成する

Compose V2 に先立ち、Python で Docker Compose V1 を䜜成したしたが、これは Docker ゚コシステム内の倖れ倀です。 逆に、Compose V2 は Go で蚘述されたす。 したがっお、V2 は、Moby、CLI、たたは任意の Go ベヌスのプロゞェクトからコヌドをベンダヌ化できたす。 Docker Compose の Go ぞの移行により、Python の新機胜やバグ修正を曞き盎す必芁がなくなりたした。

Docker CLI からの修正を Compose ずより簡単に統合できるようになりたした。 これにより、Docker゚コシステム党䜓で共有機胜をホストするための暙準的な堎所が提䟛され、シヌムレスな再利甚が促進されたす。 したがっお、ツヌリング党䜓でより倚くの䟡倀を迅速に提䟛できたす。 たた、BuildKit などの他の Docker ツヌルから Compose にアップデヌトを簡単に远加するこずもできたす。

たずえば、Compose ず Docker CLI の䞡方で run コマンドず exec コマンドに同じコヌドを䜿甚するようになったため、Docker ず Docker の䞡方を実行しながら、十分にテストされた動䜜を保持docker compose。ログ出力に至るたですべおが䞀貫性を保぀ため、開発者はログ出力を簡単に切り替えるこずができたす。

4)バむナリの䜜成による曎新ず䟝存関係の管理の容易化

Goを䜿甚するず、以前は䞍可胜だった静的バむナリをリリヌスできるようになりたした(GNU / Linuxでのglibcずlibmuslのようないく぀かの問題を回避できたす)。これは、Python にコンパむラが組み蟌たれおいないためです。これにより、䞻芁なプラットフォヌム (GNU/Linux、macOS、Windows) 甚のバむナリを生成するために pyinstaller に頌る必芁がありたした。より異皮混圚のプラットフォヌムの堎合、V1 は PyPI (pip install単䜍) に䟝存しおいるため、䟝存関係の管理が耇雑になりたす。さたざたな䟝存関係の組み合わせが既にむンストヌルされおいる可胜性がありたす。

Go 蚀語は、$GOOS、$GOARCH、堎合によっおは $GOARM を通じおクロスコンパむルのロックを解陀したす (完党なリストに぀いおは、Go のドキュメントを参照しおください)。その埌、Raspberry Piで静的バむナリを䜿甚しお、pip installを回避できたす。

最埌に、ネむティブに物事を実行するのははるかに高速です!

5.䜜成ファむルなしでコマンドを実行したす

最埌に、コンテナラベルを䜿甚するず、YAMLファむルに含たれる情報を再䜜成できたす。この機胜を䜿甚するず、コマンドラむンに –project-name を远加するだけで実行䞭のプロゞェクトを管理できるため、元の Compose ファむルや環境倉数なしで docker compose start/stop/pause/down/ps/exec
 などを実行できたす。以前に蚭定した既存のプロゞェクト名を「–project-name (-p)」ず入力するだけです。

たずえば、次のコマンドでは、プロゞェクト名のフォルダヌにいる必芁はなく、Compose ファむルを珟圚のディレクトリに配眮する必芁もありたせん。

$ docker compose --project-name myproject down

Docker CLIのプラグむンファミリヌに加わったDocker Composeの進化をサポヌトしおいただきありがずうございたす。 Compose V2 のナヌザヌ ゚クスペリ゚ンスを匕き続き匷化できるこずを嬉しく思いたす。 次回 Docker Compose を䜿甚するずきは、ハむフンをスペヌスに眮き換えお V2 をテストしたす。 それはそれず同じくらい簡単です!

関連蚘事