回答:
docker run ...
。更新:
アプリケーション、ノード、および群れクラスタ管理を提供するDocker Cloud上のサービスは、5月21日[2020]にシャットダウンされます...自動ビルドおよびレジストリストレージサービスは影響を受けず、引き続き利用できます
加えて、@ yamenkの答えは、私は理解Kubernetesの彼らの旅を持つかもしれない助けの人々をここではいくつかの詳細を追加したいと思います。
docker-compose
:は、マルチコンテナーアプリケーションを記述したYAMLファイルを取得し、コンテナーごとに複数のコマンドを入力しなくても、コンテナーの作成、開始/停止、削除を支援するツールです。docker ...
Kubernetes
:コンテナ化されたワークロードとサービスを管理するためのプラットフォームであり、宣言的な構成と自動化の両方を容易にします。何ですか?🤔読み続けてください...(ドキュメントから):Composeは、マルチコンテナのDockerアプリケーションを定義して実行するためのツールです。Composeでは、YAMLファイルを使用してアプリケーションのサービスを構成します。次に、1つのコマンドで、構成からすべてのサービスを作成して開始します。
Composeには、アプリケーションのライフサイクル全体を管理するためのコマンドがあります。
- サービスの開始、停止、再構築
- 実行中のサービスのステータスを表示する
- 実行中のサービスのログ出力をストリーミングする
- サービスで1回限りのコマンドを実行する
(Introduction to Kubernetes):Kubernetesは、Docker Swarm、Mesos Marathon、Amazon ECS、Hashicorp Nomadなどのコンテナオーケストレータです。コンテナーオーケストレーターは、ホストをグループ化してクラスターを形成するツールであり、アプリケーションの確認に役立ちます。
- 耐障害性があり、
- スケーリングでき、これをオンデマンドで実行できます
- リソースを最適に使用する
- 他のアプリケーションを自動的に検出し、相互に通信できます
- 外界からアクセス可能
- ダウンタイムなしで更新/ロールバックできます。
多くの人が、Kubernetesを学ぶのは難しいと主張しています。それは一連の問題を解決し、人々はすべての前提条件を知らずに理解しようとするからです。これは複雑になります。次のような概念/用語について読んで、パズルのピースを組み立て始めます。このプロセスは、Kubernetesが解決しようとする問題の種類を理解するのに役立ちます。
また、コンテナとその管理にはさまざまな要素があるため、クラウドネイティブの状況に注意してください。
こちらのインタラクティブバージョン:landscape.cncf.io/
2020年5月:Docker Compose仕様がオープンスタンダードに
AWS、Microsoft、およびオープンソースコミュニティの他のメンバーと協力して、既存のComposeプラットフォームに加えて、KubernetesやAmazon ECSなどのクラウドネイティブプラットフォームをサポートするようにCompose仕様を拡張しました。詳細:ブログ / compose-spec.io
docker stack deploy --orchestrator=kubernetes
... docs.docker.com/engine/reference/commandline/stack_deploy
同じホストを使用してコンテナーをネットワーク化している場合は、docker composeに進みます。
複数のホスト間でコンテナをネットワーク化している場合は、kubernetesを使用してください。
最初の違いは、コンテナーエンジンとコンテナーオーケストレーターの間です。
docker
コンテナエンジンであり、通常、開発目的でローカルにPCでローカルにビルドして実行できるコンテナは1つだけです。
docker-compose
複数のコンテナーを実行し、Dockerエンジン機能を介してボリュームとネットワークを共有させるDockerユーティリティであり、ローカルで実行してサービス構成をエミュレートし、クラスターでリモートで実行します。
Kubernetesはコンテナーオーケストレーションプラットフォームであり、コンテナーの実行とエンジン機能の強化を行い、コンテナーを構成およびスケーリングして複雑なアプリケーション(PaaSの一種、ユーザーまたはクラウドプロバイダーが管理)を提供できるようにします。Kubernetesの主な機能は、コンテナーを使用してアプリケーションからインフラストラクチャーを切り離すことです。また、Dockerが他のエンジンにも開放されています。たとえば、rktまたはcri-oでコンテナーを実行できます。
Dockerクラウドは、docker
エンジンAPIを介してコンテナーを実行および調整できるPaaSオファーでもあります。
ニーズ、インフラストラクチャの制御レベル、ターゲットユーザーに応じて、ベアメタル上のKubernetes、またはAzure ACSやGoogle GKEなどを使用できます。
これが役に立てば幸い:)よろしく
Docker Composeは本番環境に対応したツールではありません。これはPoCまたは開発環境に最適ですが、本番環境での本格的な使用には、多かれ少なかれテーブルステークである多くの機能がありません。Swarmの方が本番環境に対応していますが、グリーンフィールドシナリオでSwarmに投資することはありません。Dockerデスクトップへの組み込みとすべての主要なクラウドプロバイダーによる提供によって証明されるように、Kubernetesはオーケストレーションの戦いに勝利しました。Kubernetesははるかに能力があり、コミュニティと企業のサポートがはるかに多くなっています。
Pluralsight、Linux Academyなどで入手できるKubernetesチュートリアルのいくつかに飛び込み、選択したクラウドプラットフォーム(EKS、AKS、GKEなど)で遊ぶためにクラスターを起動することをお勧めします。ベアメタルでスピンアップしようとしている場合は、OpenShiftを見てください。ただし、この設定ではKubernetesの魔法の一部が失われていることを認識してください。
Docker Compose:
ではdocker-compose.yml
ファイルの各エントリには、必要に応じて取得することができdocker-compose
、画像を構築します。各エントリは、構築する単一のコンテナを表すことができ、各エントリは、ネットワーク要件またはポートを定義します。
Kubernetes:
Kubernetesはすべてのイメージがすでにビルドされていることを想定しており、作成するオブジェクトごとに1つの構成ファイルがあり、すべてのネットワークを手動でセットアップする必要があります。
したがって、イメージがDocker Hubでホストされていることを確認し、1つの構成ファイルを作成してコンテナーを作成し、1つの構成ファイルを作成してネットワークをセットアップします。
Docker compose:Docker コンテナーは、yamlファイルを使用せずに直接実行できます。しかし、Docker composeツールのコンテナーのプロパティを使用して、docker-compose.ymlファイルと呼ばれるファイル内で定義できます。詳細については、以下のサンプルymlファイルをご覧ください。
version: "3.7"
services:
redis:
image: redis:latest
deploy:
replicas: 1
configs:
- my_config
- my_other_config
configs:
my_config:
file: ./my_config.txt
my_other_config:
external: true
画像の名前、レプリカの数などは、ymlファイルで設定できます。
Kubernetes: これは、googleによって構築されたDocker上で実行されるコンテナー管理プラットフォームです。Docker Swamは、Docker自体によって構築された別のコンテナー管理プラットフォームです。Kubernetesは、ポッカー(dockerのコンテナーに対応)に関連する構成をdocker composeのようなyamlファイルに保存する機能も提供します。yamlファイルの例
apiVersion: v1
kind: Pod
metadata:
name: rss-site
labels:
app: web
spec:
containers:
- name: front-end
image: nginx
ports:
- containerPort: 80
- name: rss-reader
image: nickchase/rss-php-nginx:v1
ports:
- containerPort: 88
ここでは、画像、開かれるポート、ポッドからホストへのポートマッピングなども指定できます。docker composeと同様に、kubectl apply -fはこのファイルを実行するコマンドです。