Dockerコンテナーにより多くのメモリを割り当てる方法


117

タイトルが示すように、私は自分のコンテナーにより多くのメモリを割り当てようとしています。関連がある場合に備えて、「aallam / tomcat-mysql」というDockerハブのイメージを使用しています。

特別なフラグなしで正常に起動すると、2GBのメモリ制限があります(メモリが設定されていない場合は無制限であることを読んでも)

ここに私のドッカーの統計があります

CONTAINER           CPU %               MEM USAGE / LIMIT       MEM %               NET I/O             BLOCK I/O           PIDS
ba57d6c9e9d2        0.22%               145.6 MiB / 1.952 GiB   7.29%               508 B / 508 B       0 B / 6.91 MB       68

私はそのように明示的にメモリを設定しようとしましたが、同じ結果が得られました

docker run -d --memory=10g --memory-swap=-1 -e MYSQL_PASSWORD=password -p 3307:3306 -p 8081:8080 aallam/tomcat-mysql

おそらく、VMがそれを制限しているのだと私は読んだ。しかし、なぜdocker statsはコンテナのサイズ制限が2GBであることを示しているのですか?

回答:


202

表示される2GB制限は、Dockerが実行されるVMの合計メモリです。

docker-for-windowsまたはdocker-for-macを使用している場合は、タスクバーのクジラ🐳アイコンから簡単に増やすことができます。次に、[設定]-> [詳細]に移動します。

Docker設定

ただし、背後でVirtualBoxを使用している場合は、VirtualBoxを開き、Dockerマシンに割り当てられたメモリを選択して構成します。

Macの場合はこちらをご覧ください。

https://docs.docker.com/docker-for-mac/#memory

メモリデフォルトでは、Docker for MacはMacで利用可能なメモリの合計から割り当てられた2 GBのランタイムメモリを使用するように設定されています。Docker for Macで使用するメモリを少なくしたい場合は、この数値を高く(たとえば3)または低く(1に)設定することで、アプリのRAMを増やしてパフォーマンスを高速化できます。

Windowsの場合:

https://docs.docker.com/docker-for-windows/#advanced

メモリ-Docker for Windows Linux VMが使用するメモリの量を変更する


72
GUIなしでそれをどのように行うのですか?
フィリップ

13
@フィリップ、あなたのユースケースは何ですか?Docker for Windowsまたはdocker for Macにはguliが付属しています。あなたのケースはLinux上のネイティブDockerだと思います(実稼働システム/クラウドの場合のように、仮想マシンなし)。そのような場合、dockerにはその使用のためのホールマシンがあるため、VMメモリを設定する必要はありません。
ロバート

10
ええ、私は後でそれを理解しました。それで、ドッカーコンテナーに4 GBを超えるRAMを搭載したい場合、Linuxで開発する場合は何もする必要はありませんか?
フィリップ

3
これは不可能です。これは主に、Dockerコンテナーにメモリを割り当てないためです。代わりに、コンテナーが使用できるメモリの量を制限します。現在の答えはコンテナーへのメモリの割り当てではなく、Dockerが実行される仮想マシンへのメモリの割り当てに関するものであることに注意してください。
Robert

2
@SiddharthPant、Linuxボックス上で直接実行されるdockerは、利用可能なメモリをできるだけ使用するため、物理的なもの以外に制限はありません。
Robert

21

(dockerプリファレンス->アドバンス)から最大のメモリをドッカーマシンに割り当てます。

詳細設定のスクリーンショット: 詳細設定のスクリーンショット。

これにより、コンテナーの実行中にDockerが消費する最大制限が設定されます。次に、4ギガラム以上の-m = 4gフラグを指定して、新しいコンテナでイメージを実行します。例えば

docker run -m=4g {imageID}

ラム制限増加の変更を適用することを忘れないでください。Dockerを再起動し、RAM制限が増加したことを再確認します。これは、DockerコンテナーのRAM制限の増加が見られない要因の1つである可能性があります。


17

デフォルトのコンテナーを変更する必要があり、Virtualboxを使用している場合は、コマンドライン/ CLIで変更できます。

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