Cara menetapkan lebih banyak memori ke kontainer buruh pelabuhan

117

Seperti judulnya, saya mencoba untuk memberikan lebih banyak memori ke container saya. Saya menggunakan gambar dari hub buruh pelabuhan yang disebut "aallam / tomcat-mysql" jika itu relevan.

Ketika saya memulainya secara normal tanpa flag khusus, ada batas memori 2GB (meskipun saya membaca bahwa memori tidak dibatasi jika tidak disetel)

Berikut adalah statistik buruh pelabuhan saya

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

Saya mencoba mengatur memori secara eksplisit seperti itu tetapi dengan hasil yang sama

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

Saya pernah membaca bahwa mungkin VM adalah yang membatasinya. Tapi mengapa statistik buruh pelabuhan menunjukkan bahwa batas ukuran kontainer adalah 2GB?

kane
sumber

Jawaban:

203

Itu 2GBbatas yang Anda lihat adalah memori total VM di mana buruh pelabuhan berjalan.

Jika Anda menggunakan buruh pelabuhan-untuk-windows atau buruh pelabuhan-untuk-mac, Anda dapat dengan mudah meningkatkannya dari ikon Paus 🐳 di bilah tugas, lalu buka Preferensi -> Lanjutan:

Preferensi Docker

Tetapi jika Anda menggunakan VirtualBox di belakang, buka VirtualBox, Pilih dan konfigurasikan memori yang ditetapkan mesin buruh pelabuhan.

Lihat ini untuk Mac:

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

MEMORI Secara default, Docker untuk Mac diatur untuk menggunakan memori runtime 2 GB, dialokasikan dari total memori yang tersedia di Mac Anda. Anda dapat meningkatkan RAM pada aplikasi untuk mendapatkan kinerja yang lebih cepat dengan mengatur angka ini lebih tinggi (misalnya ke 3) atau lebih rendah (ke 1) jika Anda ingin Docker untuk Mac menggunakan lebih sedikit memori.

Untuk Windows:

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

Memori - Ubah jumlah memori yang digunakan Docker untuk Windows Linux VM

Robert
sumber
72
Bagaimana Anda melakukannya tanpa gui?
Philippe
13
@Philippe, apa kasus penggunaan Anda? Docker untuk Windows atau buruh pelabuhan untuk Mac dilengkapi dengan guli. Saya pikir case Anda mendapat docker asli melalui Linux (tanpa mesin virtual, yang merupakan case untuk sistem produksi / cloud). Dalam kasus seperti itu, Anda tidak perlu menyiapkan memori VM karena buruh pelabuhan memiliki mesin lubang untuk penggunaannya.
Robert
10
Ya, saya mengetahuinya nanti. Jadi jika saya ingin kontainer buruh pelabuhan saya memiliki> 4GB RAM, saya tidak perlu melakukan apa-apa jika saya mengembangkan di Linux?
Philippe
3
Ini tidak mungkin, terutama karena Anda tidak menetapkan memori ke kontainer buruh pelabuhan, sebaliknya Anda membatasi berapa banyak memori yang dapat digunakan kontainer. Perhatikan bahwa jawaban saat ini bukan tentang menetapkan memori ke kontainer, ini tentang menetapkan memori ke mesin virtual di mana pekerja galangan berjalan.
Robert
2
@SiddharthPant, buruh pelabuhan yang berjalan langsung di kotak Linux akan menggunakan sebanyak mungkin memori yang tersedia, oleh karena itu tidak ada batasan selain yang fisik.
Robert
21

Alokasikan memori maksimum ke mesin buruh pelabuhan Anda dari (preferensi buruh pelabuhan -> muka)

Tangkapan layar dari pengaturan lanjutan: Tangkapan layar dari pengaturan lanjutan.

Ini akan menetapkan batas maksimum konsumsi buruh pelabuhan saat menjalankan kontainer. Sekarang jalankan gambar Anda dalam wadah baru dengan -m = 4g flag untuk 4 gigs ram atau lebih. misalnya

docker run -m=4g {imageID}

Ingatlah untuk menerapkan perubahan peningkatan batas ram. Mulai ulang buruh pelabuhan dan periksa kembali apakah batas ram memang meningkat. Ini bisa menjadi salah satu faktor Anda tidak melihat peningkatan batas ram di kontainer buruh pelabuhan.

Antrian Pasar
sumber
17

Jika Anda ingin mengubah container default dan Anda menggunakan Virtualbox, Anda dapat melakukannya melalui commandline / CLI:

docker-machine stop
VBoxManage modifyvm default --cpus 2
VBoxManage modifyvm default --memory 4096
docker-machine start
hancurkan segalanya
sumber