DockerイメージがWindows / MVCコアでビルドするのに時間がかかる


9

Dockerコンテナーに複数のプロジェクトがあるMVC Core 2.2があります。実行すると、イメージをビルドしてコンテナを起動するのに約4分かかります。使用していdocker-composeます。

これは小さな開発であり、私はまともなコンピューターを持っているので、これは遅いようです。リソースが使用されていないようです。イメージのビルド中、プロセッサが8%未満であり、RAMが動作しないため、ディスクはほぼ0%です。GPU 0%。Microsoftのイメージがダウンロードされている間、インターネットが数秒間急上昇しているのが見えますが、それだけです。私はドッカーに次のリソースを与えました:

Cores: 8
RAM: 8GB
SWAP: 3gb
Disk Image Size: 64GB (30.5 GB used)

これらのハードウェアリソースを使用してビルドを高速化する方法はありますか?


WindowsまたはLinux Core Base-Imagesを使用しましたか?
ThomasBrüggemann

Windows 10マシンでLinuxベースのイメージを使用しています
mgPePe

1
そのため、LinuxコンテナーはWindows 10でネイティブに実行されず、Docker for Windowsはそのための特別なVMを作成します。これにより遅延が発生する可能性があります。これは実験的な機能が存在するが、これは開発の参照用にまだあるgithub.com/moby/moby/issues/33850
トーマス・Brüggemann

回答:


2

Windows 10のDockerで一般的な問題のようですが、Webでこの問題について話しているスレッドがいくつかあり、Dockerに割り当てられているハードウェアリソースとは関係がないようです。

そのため、Windows 10仮想インスタンスでいくつかの試行を行ったところ、例のdocker-composeを使用していくつかのLinuxベースのコンテナーを実行している同様の動作に気づきました。

ここでは、検索中に見つけたすべてのステップのうち、実際にテスト中に操作を高速化したように思われるステップを報告します。

  1. 開発(例:git repos)およびdocker imageディレクトリを追加します。

  2. 次のコマンドを実行してDNSをフラッシュします。

    ipconfig /flushdns
    
  3. DNSをたとえばGoogleに変更してみてください(8.8.8.8-8.8.4.4)またはCloud Fareに(1.1.1.1-1.0.0.1)(ここで、すでにGoogle DNSを持っているので、反対の方法で設定しました。 DNSが遅くなり、実際の動作が少し遅くなりました)

  4. 他のアンチウイルスがインストールされている場合は例外を追加します(ここでも最初にそれらを無効にして、これが役立つかどうかを確認します)

  5. すべてのネットワークインターフェイスからすべてのIPV6サポートとNetBIOSを削除します

注: Dockerをアンインストールし、これらを適用した後にインストールするようにというアドバイスがありますが、Windows 10の新規インストールから開始したため、テストしませんでした。

これらがあなたの環境にも役立つことを願っています!

私が見つけた最高のリファレンス:


1

ビルドディレクトリにファイルが多すぎるかどうかを確認します。dcokerがすべてのファイルをデーモンに送信する必要がある場合は、完了までの時間も必要です......

あなたはを使用して不要なファイルを無視することができます .dockerignore

docker CLIは、コンテキストをdockerデーモンに送信する前に、コンテキストのルートディレクトリで.dockerignoreという名前のファイルを探します。このファイルが存在する場合、CLIはコンテキストを変更して、そのパターンに一致するファイルとディレクトリを除外します。これにより、不必要に大きなファイルやディレクトリをデーモンに送信したり、ADDまたはCOPYを使用してそれらをイメージに追加したりする必要がなくなります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.