58

仮想化された Linux システムでエントロピーが不足することは、一般的な問題のようです (例: /dev/random Extremely Slow?Linux を /dev/random にバッファーさせる)。ハードウェア乱数ジェネレーター (HRNG) を使用しているにもかかわらず、HAVEGED のようなエントロピー収集デーモンの使用しばしば提案されます。ただし、エントロピー収集デーモン (EGD) は Docker コンテナー内で実行することはできず、ホストによって提供される必要があります。

EGD を使用すると、Ubuntu、RHEL などの Linux ディストリビューションに基づく Docker ホストで問題なく動作します。そのようなデーモンを boot2docker (Tiny Core Linux (TCL) に基づく) 内で動作させることは、別の話のようです。TCL には拡張メカニズムがありますが、エントロピー収集デーモンの拡張機能は利用できないようです

したがって、EGD は (本番) ホスティング環境で docker コンテナーを実行するための適切なソリューションのように思えますが、boot2docker での開発/テストのためにそれを解決するにはどうすればよいでしょうか?

boot2docker で EGD を実行するのは難しすぎるように思えたので、単純に /dev/random の代わりに /dev/urandom を使用することを考えました。/dev/urandom を使用すると安全性が少し低下しますが、長期的な暗号化キーを生成しないほとんどのアプリケーションでは問題ありません。少なくとも、boot2docker 内での開発/テストには問題ないはずです。

4

6 に答える 6

6

もう 1 つのオプションは、rng-toolsパッケージをインストールして、/dev/urandom を使用するようにマップすることです。

  yum install rng-tools
  rngd -r /dev/urandom 

これにより、docker コンテナー内のボリュームをマップする必要がなくなりました。

于 2015-12-18T18:48:26.087 に答える
3

開発/テスト用に Docker コンテナーを変更するのが好きではなかったので、boot2docker イメージを変更しようとしました。幸いなことに、boot2docker イメージは Docker でビルドされており、簡単に拡張できます。そこで、独自の Docker ビルドboot2docker-urandomをセットアップしました。ここにある udev ルールで標準の boot2docker イメージを拡張します。

独自の boot2docker.iso イメージのビルドは次のように簡単です。

$ docker run --rm mbonato/boot2docker-urandom > boot2docker.iso

boot2docker に付属する標準の boot2docker.iso を置き換えるには、次のことを行う必要があります。

$ boot2docker stop
$ boot2docker delete
$ mv boot2docker.iso ~/.boot2docker/
$ boot2docker init
$ boot2docker up

制限、Docker コンテナー内から /dev/random は引き続きブロックされます。ほとんどの場合、Docker コンテナーはホストの /dev/random を直接使用するのではなく、対応するカーネル デバイスを使用しますが、これはまだブロックされています。

于 2014-09-24T15:45:15.660 に答える