問題タブ [linux-containers]
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.
linux - 実行中の Docker コンテナーをバックアップしますか?
実行中の Docker コンテナーをバックアップすることはできますか? コマンドはexport
それを行うのに適していますか?
architecture - コンテナー (docker) 内からアプリをアナウンスする
週末にdocker's IRCでこの質問をしましたが、答えを熟考する前に立ち去らなければなりませんでした:
コンテナ内で多数のアプリケーションを実行している場合 (ここでは、それらがすべて同じ物理ハードウェア上で実行されていると仮定しますが、そうである必要はありません)、それぞれがそれぞれを見つけられるようにしたいと考えています。その他は自動的に。
ある種のレジストリ ( etcdや DNS-SD/Bonjour など) を使用して、サービスと関連する詳細をアナウンスし、他のアプリケーションにそれらを見つけて、それに応じてトラフィックをルーティングさせることができます。
ここでの問題は、アプリケーションはコンテナー内でサービスを提供しているホスト名/ポートを認識できますが、これはアクセス可能なポートまたはアドレスである必要はないということです。結合する必要がある 2 つの情報があります。
- サービスにアクセスできる場所。コンテナの外からアクセス可能
- サービスの機能 (バージョン番号、サービスの種類); コンテナ内からアクセス可能
コンテナの壁を越えてこの情報を取得する方法を教えてください。
- TCP 経由で docker をコンテナーに公開することで、アプリはその表示場所を照会できますが、これは関心の分離に違反しているようです。
- アナウンスの準備のためにコンテナが開始された後、ホスト システムが照会するファイル/ポートをコンテナで開くことができますが、これは WSDL を再発明しているように感じます。
この問題をどのように解決すべきかについての考えやガイダンスはありますか?
php - Docker とコンテナー間の接続
ドッカーのコンテナ間の接続を作成しようとしています。php5-fpm を含む 1 つのコンテナーと、nginx を含む 2 つ目のコンテナー。
php5-fpm のデフォルトの設定、わずかな変更:
および nginx (/etc/nginx/sites-available/default):
次に、 https://github.com/jpetazzo/pipeworkとの接続を作成しようとしましたが、それが理由fastcgi_pass 192.168.1.2:9000;
です。コンテナーから直接 IP を使用してみましたが、何もしませんでした。
そして、lynxでページを開こうとすると、BadGatewayがあります。
post port MASTER_PORT=$(sudo docker port $MASTER_ID 9000) を試してみましたが、何も... ping は問題なく実行されます。nginx からポート 9000 への Telnet が数秒間開いたままになり、「接続が閉じられました...」
私が間違っていることを誰が説明できますか? どうも!
/編集/ fastcgi_pass を 172.17.42.1:9000; に変更してみました。(ホスト マシン上の docker0 のアドレス) を指定し、ホスト マシンで tcpdump を開始します。
tcpdump -i docker0 ポート 9000
そして、私が持っています:
このように、パケットはコンテナ間を移動します...しかし、なぜ BadGateway なのですか?
docker - イメージをコミットするときに Docker コンテナーの構成をコピーするにはどうすればよいですか?
Dockerfile とボリュームを使用してすべてを整理するのが理想的ですが、それが現実的でない場合や便利でない場合もあります。
たとえば、Ghost が既にセットアップされているイメージを見つけましたが、それは機能しているように見えました。というわけで、ブログ記事をいくつか追加しました。その後、実際に config.js を変更してメールを設定する必要があることに気付きました。
そこで、コンテナーを停止してコミットし、bash でいくつかの変更を行い、再度コミットしてから、Ghost を実行しているコンテナーを再び開始しました。しかし、新しいイメージには作業ディレクトリと環境の構成がなかったため、うまく機能しませんでした。
イメージをコミットするときに Docker コンテナーの構成をコピーするにはどうすればよいですか? docker inspect
コンテナ上で実行し、構成を引き出して、それをdocker commit
コマンド ラインに含めるスクリプトを作成する必要があるのではないでしょうか?