問題タブ [coreos]
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 - CoreOS での再起動後に Docker コンテナを自動再起動する方法は?
OS の再起動時に init.d または systemd のようなプロセスによって Docker デーモンが自動的に再起動されると仮定すると、1 つまたは複数の Docker コンテナーを再起動するための推奨される方法は何ですか? たとえば、リバース プロキシまたはデータベース サーバーの背後に多数の Web サーバーがあるとします。
docker - Dockerコンテナはホストとは異なるフレーバーをどのように持つことができますか
Linux コンテナーに関する私の理解では、各コンテナーは同じホスト カーネルを使用し、コンテナーへのインストールはホスト上の分離されたファイル システム レイヤーにすぎません。
私はcoreosの入門ガイドを読んでいました。Coreos を含むホストで ubuntu コンテナを起動する方法を示しています。
これはどのように可能ですか?ホストとコンテナーで異なるフレーバーを使用するにはどうすればよいですか?
ありがとう、ムルタザ
cluster-computing - CoreOS で etcd を使用してサービス検出を行うときに古いデータを処理する方法は?
私は現在 CoreOS をいじくり回しており、それに基づいてクラスターを作成しています。これまでのところ、単一ホストでの CoreOS のエクスペリエンスは非常にスムーズです。しかし、サービス ディスカバリに関しては、少し曖昧になります。どういうわけか全体的なアイデアが得られないため、ここで助けを求めています。
私がやりたいことは、最初のコンテナーが 2 番目のコンテナーに依存する 2 つの Docker コンテナーを実行することです。純粋な Docker について話している場合は、リンクされたコンテナーを使用してこれを解決できます。ここまでは順調ですね。
ただし、Docker は複数のホスト間でコンテナーをリンクできないため、このアプローチはマシンの境界を越えては機能しません。だから私はこれを行う方法を考えています。
私がこれまでに理解したのは、これに対処する方法に関するCoreOSのアイデアは、etcd
基本的にポートを介して各ホストでローカルにアクセスできる分散キー値ストアであるサービスを使用することであるという4001
ことです。したがって、対処する必要はありません( の消費者としてetcd
) ネットワークの詳細: アクセスするだけlocalhost:4001
で問題ありません。
したがって、私の頭の中では、サービスを提供する Docker がスピンアップすると、自分自身 (つまり、その IP アドレスとそのポート) を local に登録し、Dockeretcd
全体etcd
に情報を配布することを意味するという考えが浮かびました。通信網。このようにして、たとえば次のようなキーと値のペアを取得します。
現在、別の Docker コンテナが にアクセスする必要がある場合、少なくともネットワーク全体に情報が配布された後は、RedisService
独自のローカル から IP アドレスとポートを取得します。etcd
ここまでは順調ですね。
しかし今、私には答えられない質問があり、それはすでに数日間私を困惑させています: サービスがダウンするとどうなりますか? 内のデータをクリーンアップするのは誰etcd
ですか? クリーンアップされていない場合、すべてのクライアントが存在しないサービスにアクセスしようとします。
現時点で私が考えることができる唯一の (信頼できる) 解決策はetcd
、データに の TTL 機能を利用することですが、これにはトレードオフがあります: 数秒ごとにハートビートを送信する必要があるため、ネットワーク トラフィックが非常に多い、または古いデータと一緒に暮らす必要があります。どちらもいいじゃない。
私が考えることができるもう 1 つの「解決策」は、サービスがダウンしたときにサービス自体を登録解除することですが、これは計画的なシャットダウンに対してのみ機能し、クラッシュや停電などに対しては機能しません …</p>
それで、あなたはこれをどのように解決しますか?
linux - Vagrantfileで接続されたVirtualBoxストレージデバイスへのパスを確実に取得するには?
私の Vagrantfile では、VirtualBox を使用して、同じストレージ コントローラー上に任意のストレージ デバイスを動的に作成/マウントしようとしています (たとえば、読み取り専用ファイル システムでの永続化のため)、VM 上の特定のパス (Guest Additions、nfs などを使用しない)。現在、これを達成しようとして多くのフープ (以下の要点を参照) を飛び越えています。たとえば、私が試みているワークフローは次のとおりです。
- 指定されたイメージ パス (ホスト ファイル システム上の VDI、VMDK など) を使用して、
VBoxManage createhd
存在しない場合 (動作中) - #1 のストレージ デバイスを
VBoxManage storageattach
(working)経由でストレージ コントローラに接続します。 - 接続されたストレージ デバイスのプライマリ パーティションを指定されたマウントポイントにマウントします (機能しません)。
したがって、各デバイスのこれまでのステップバイステップは次のとおりです(この要点、部分的に擬似コードを参照):
- デバイスの UUID を取得します (VBox に従って)
- ゲスト上のデバイスへの実際のパスを取得します (経由
/dev/disk/by-uuid/<uuid>
) - デバイスが作成されたばかりの場合は、プライマリ パーティションを作成します
- デバイスをマウントします (オプションで、
/etc/fstab
永続化のために追加します)
問題は、特定のデバイスが で利用可能になると仮定/予測したくない/dev/sdX
ため、マウントされていないデバイスへの参照を (マウントするために) に取得する信頼できる方法を思いつかないことです。 VBox UUID とゲスト OS デバイスの UUID が一致していないように見えるため、これが重要です。それらは同じであるはずですか?そうでない場合、VBox 情報のみを使用して、ゲストのデバイス パスを確実に取得するにはどうすればよいですか? これを達成するためのより良い方法はありますか?
余談ですが、私は CoreOS (読み取り専用のルート マウントを持つ) でテストしており、この特定の目的のためにホストからゲスト追加機能や NFS を使用したくありません。意図的にストレージ デバイスを使用しようとしています。
macos - vagrant-coreos イメージは、再起動時に OS X の virtualbox 4.3.2 の共有フォルダーを削除します
VirtualBox のバージョン 4.3.2 を利用して、Mac OS X の Vagrant 内でこのCoreOS イメージを実行します。
イメージを起動すると、次のエラーが表示されます。
これは、ゲストの追加をサポートしていないように見えるOS X で VirtualBox を実行しているにもかかわらずです。
それにもかかわらず、共有フォルダーを手動で追加することはできますが、Settings -> Shared Folders
これらはイメージの再起動時に保持されません。Auto-mount
Make permanent
この CoreOS イメージには、セキュリティ ポリシーの一部としてランダムな再起動が含まれているため、再起動後に共有フォルダーが失われ、イメージを完全に削除して再作成しない限り共有フォルダーを取り戻すことができません。
なぜこうなった?
docker - CoreOS の同じ Docker コンテナーで 2 つのサービスを実行しますか?
私はDockerとCoreOSが初めてです。コンテナの概念と、それらが互いにどのように関係しているかについて、私は少し不明確だと思います。
カスタム サーバー (myserver と呼びます) と memcached サーバー (myserver のみがアクセスします) の 2 つのサービスを実行する CoreOS ベースのサーバーをセットアップしようとしています。
したがって、CoreOSマシンにmyserver.serviceファイルをインストールするところまで到達したと思います。これにより、次のような行を使用してupi myserverを正常に起動できます。
私の質問は、memcached サーバーを起動するために、CoreOS で新しい memcached.service ファイルを作成する必要があるかということです。その場合、カスタム サーバーと同じコンテナー "my_container" を使用する必要がありますか? 同じコンテナーを使用しない場合、myserver は memcached サーバーにアクセスできますか?