問題タブ [docker-swarm]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
docker - Marathon を使用して Docker Swarm で Docker コンテナを実行していますか?
Docker Swarm と mesos の統合に成功し、すべてが順調に進んでいます。
しかし今では、次のようにコマンド ラインからのみ Docker swarm でコンテナーを起動できます。
クラスターでのジョブ スケジューリングに Marathon を使用しています。Marathon を使用して mesos と統合された docker swarm で docker コンテナを起動する方法はありますか?
Marathon 以外のスケジューラでそれを行うことは可能ですか?
docker - Docker Swarm Master は個別の物理ノードにする必要がありますか?
私はDocker Swarmに取り掛かっていますが、答えが見つからない質問があります...
3 つの物理ホストがあり、クラスターを作成したいと考えています。別の (4 番目の) 物理ホストを使用して Swarm マスターを実行し、もう 1 つを KV ストアに使用する必要がありますか?それとも、これら 3 つのホストのいずれかで実行し、それらすべてを Swarm ノードとして使用することができますか?
ありがとう。
ubuntu - AWS ubuntu マシンで docker swarm クラスターをセットアップする方法
以下のエラーが発生します。swarm クラスタでコンテナを作成して実行中。
私が従った手順。
One VPC を作成し、すべてのポート番号を許可するセキュリティ グループを追加しました。
AWS で 3 つの ubuntu マシンを作成しました (manager、slave1、slave2)
まず、以下のコマンドで Consul ノードを起動しました
docker run --restart=unless-stopped -d -p 8500:8500 -h consul1 progrium/consul -server -bootstrap
次に、同じマシンでスウォームマネージャーを開始しました
docker run --restart=unless-stopped -d -p 3375:2375 swarm 管理 consul://172.31.17.163:8500
次に、2つのスレーブを追加しました
docker -H=tcp://slave1ip:2375 --restart=unless-stopped run -d swarm join --advertise=slave1ip:2375 consul://172.31.17.163:8500
docker -H=tcp://slave2ip:2375 --restart=unless-stopped run -d swarm join --advertise=slave2ip:2375 consul://172.31.17.163:8500
スウォームマネージャーマシンに領事店を追加
DOCKER_OPTS="--cluster-store=consul://172.31.17.163:8500 --cluster-advertise=eth0:2375 -H tcp://0.0.0.0:2375 -H unix:///var/run/docker 。靴下"
ドッカー情報
export DOCKER_HOST=tcp://172.31.17.163:3375
docker run ハローワールド
それは完璧に実行されました。そして、コンテナがスプレッド戦略でスレーブを作成しているのを見ることができます
今、私はただ作成しようとしています
docker-compose.yml
docker-compose up
これは次のエラーを言います。
同じエラーが発生します
docker network create -d overlay myapp
問題は、これが現在の構成でオーバーレイネットワークを作成していないことです。
このエラーを解決するにはどうすればよいですか?
docker - オンデマンドの Docker コンテナの起動を実装する
状況: しばらくの間、定期的に攻撃を受け、その後長期間使用されないままになる、多くの重いドッカー コンテナ。
Wish: コンテナーをオンデマンドで開始し (systemd がソケットのアクティベーションを通じて開始するように)、一定期間アイドル状態になった後にコンテナーを停止します。エンドユーザーに目に見えるダウンタイムはありません。
オプション:
- Kubernetes には、レプリカをスケーリングできるリソース コントローラーがあります。レプリカの数を 0 に保ち、必要に応じて 1 に設定することは可能だと思いますが、どうすればそれを達成できますか? ユーザー ガイドには、自動スケーリング コントロール エージェントと呼ばれるものがあると書かれていますが、これに関する詳細情報はありません。リクエストを追跡し、ユーザー定義のロジックに基づいてスケーリングするために使用できる、プラグイン可能でプログラム可能なエージェントはありますか?
- Docker Swarm には解決策がありません。間違っている場合は修正してください。
- docker デーモンにアクセスできる、選択した言語で記述されたカスタム http サーバーを使用します。正しい場所にルーティングする前に、コンテナーの存在を確認し、実行中であることを確認します。欠点 - 一般的な解決策ではありません。コンテナーにする必要はなく、デーモンにアクセスする必要もありません。
- ここで説明されているように systemd を使用します。上記と同じ欠点があります。つまり、一般的ではなく、ネットワーク タスクを自分で処理する必要があります (生成されたコンテナーの IP を見つけて、サーバー/プロキシの構成にフィードするなど)。
どんなアイデアでも大歓迎です!
nginx - docker swarm にアプリケーションをデプロイし、その IP アドレスを A レコードに公開する方法
nginx を使用して docker swarm クラスターを正常にセットアップしました。私のec2インスタンスで。このチュートリアルを使用して
https://botleg.com/stories/load-balancing-with-docker-swarm/
私はこのように使用しています
マネージャー 1
ノード 1
ノード 2
サービス検出のために登録者と一緒にコンソールを使用しています。
Consul Machine docker run --restart=unless-stopped -d -p 8500:8500 -h consul progrium/consul -server -bootstrap
Swarm Manager docker run --restart=unless-stopped -d -p 3375:2375 swarm manage --replication --advertise=mangerip:3375 consul://consulip:8500/
docker run --restart=unless-stopped -d --name=registrator -h=host --volume=/var/run/docker.sock:/tmp/docker.sock gliderlabs/registrator:latest consul://consulip: 8500
Node1 docker run --restart=unless-stopped -d swarm join --advertise=node1ip:2375 consul://consulip:8500/
docker run --restart=unless-stopped -d --name=registrator -h=host --volume=/var/run/docker.sock:/tmp/docker.sock gliderlabs/registrator:latest consul://consulip: 8500
Node2 docker run --restart=unless-stopped -d swarm join --advertise=node2:2375 consul://consulip:8500/
docker run --restart=unless-stopped -d --name=registrator -h=host --volume=/var/run/docker.sock:/tmp/docker.sock gliderlabs/registrator:latest consul://consulip: 8500
私の Dockerfile
start.sh
デフォルト.ctmpl
docker-compose.yml
これに関する問題は、Docker がノードを自動的に選択するため、A レコードを指す必要がある IP アドレスです。
これを初めて実行すると、最初のノードが選択される場合があります。これを削除してすべての手順をやり直すと、別のノードと別の IP が選択されます。そのときは A レコードを変更する必要があります。この問題をどのように解決するか、
私はそれをグーグルで検索し、waglを見つけました。これにより、DNS ベースのサービス検出が可能になりました。これは素晴らしいことです。しかし、それは非常に基本的なものだったと思います。それが本番環境にあったかどうかはわかりません。
AからZまでの流れ、つまり、展開からAレコードへのIPアドレスの設定までを行う方法を誰か教えてください。または、リンクを教えてください。
docker - Docker Swarm 配布ビルド イメージ
状況:
2 つのエージェントを持つ docker swarm があります。docker swarm メイン デーモンは、私のマネージャー ホスト (docker-machine サンプル セットアップ) で--strategy random
オプション付きで実行されます。
手順:
docker swarm manager 接続を使用して新しい docker イメージをビルドします
docker -H tcp://$(docker-machine ip manager):3376 build -t test123 .
マネージャー接続を使用して複数のコンテナーを起動します
docker -H tcp://$(docker-machine ip manager):3376 run -d test123 sleep 20 docker -H tcp://$(docker-machine ip manager):3376 run -d test123 sleep 20 docker -H tcp://$(docker-machine ip manager):3376 run -d test123 sleep 20 docker -H tcp://$(docker-machine ip manager):3376 run -d test123 sleep 20
Docker コンテナーは、イメージのビルドにも使用されたホスト上で常に実行されます。
ビルド イメージを他のホストに自動的に配布する方法はありますか?
Dockerレジストリを使用してイメージをプッシュアンドプルするだけでよいことは知っていますが、これは避けたいです。
私が見つけた別の解決策は、画像を tgz に保存してインポートすることでした。docker-swarm ホスト (マネージャー) でインポートすると、イメージがすべてのエージェントに自動的に配布されます。(少なくともこれは私が観察したものでした)
おそらく別のオプションがありますか?