Cách gán thêm bộ nhớ cho vùng chứa docker


117

Khi tiêu đề đọc, tôi đang cố gắng gán thêm bộ nhớ cho vùng chứa của mình. Tôi đang sử dụng một hình ảnh từ trung tâm docker có tên "aallam / tomcat-mysql" trong trường hợp có liên quan.

Khi tôi khởi động nó bình thường mà không có bất kỳ cờ đặc biệt nào, có giới hạn bộ nhớ là 2GB (mặc dù tôi đọc rằng bộ nhớ không bị giới hạn nếu không được đặt)

Đây là số liệu thống kê về docker của tôi

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

Tôi đã thử thiết lập bộ nhớ rõ ràng như vậy nhưng với kết quả tương tự

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

Tôi đã đọc rằng có lẽ VM là thứ đang hạn chế nó. Nhưng tại sao số liệu thống kê của docker lại hiển thị rằng giới hạn kích thước vùng chứa là 2GB?

Câu trả lời:


203

Đó là 2GBgiới hạn mà bạn nhìn thấy là tổng bộ nhớ của máy ảo trong đó Docker chạy.

Nếu bạn đang sử dụng docker-for-windows hoặc docker-for-mac, bạn có thể dễ dàng tăng nó từ biểu tượng Cá voi 🐳 trên thanh tác vụ, sau đó đi tới Tùy chọn -> Nâng cao:

Tùy chọn Docker

Nhưng nếu bạn đang sử dụng VirtualBox phía sau, hãy mở VirtualBox, Chọn và định cấu hình bộ nhớ được gán cho máy-docker.

Xem cái này cho Mac:

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

BỘ NHỚ Theo mặc định, Docker cho Mac được đặt để sử dụng bộ nhớ thời gian chạy 2 GB, được phân bổ từ tổng bộ nhớ có sẵn trên máy Mac của bạn. Bạn có thể tăng RAM trên ứng dụng để có được hiệu suất nhanh hơn bằng cách đặt số này cao hơn (ví dụ: 3) hoặc thấp hơn (thành 1) nếu bạn muốn Docker cho Mac sử dụng ít bộ nhớ hơn.

Cho cửa sổ:

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

Bộ nhớ - Thay đổi dung lượng bộ nhớ mà Docker cho Windows Linux VM sử dụng


72
Làm thế nào để bạn làm điều đó mà không có gui?
Philippe

13
@Philippe, trường hợp sử dụng của bạn là gì? Docker cho Windows hoặc docker cho Mac đi kèm với guli. Tôi nghĩ rằng trường hợp của bạn là có docker gốc trên Linux (không có bất kỳ máy ảo nào, đó là trường hợp cho hệ thống sản xuất / đám mây). Trong những trường hợp như vậy, bạn không cần thiết lập bộ nhớ VM vì docker có máy lỗ để sử dụng.
Robert

10
Vâng, tôi đã tìm ra điều đó sau. Vì vậy, nếu tôi muốn bộ chứa docker của mình có RAM> 4GB, tôi không cần phải làm gì nếu phát triển trên Linux?
Philippe

3
Điều đó là không thể, chủ yếu là do bạn không gán bộ nhớ cho các bộ chứa docker, thay vào đó bạn giới hạn dung lượng bộ nhớ mà một bộ chứa có thể sử dụng. Lưu ý rằng câu trả lời hiện tại không phải là về việc gán bộ nhớ cho các vùng chứa, nó là về việc gán bộ nhớ cho máy ảo mà docker chạy.
Robert

2
@SiddharthPant, docker chạy trực tiếp trên hộp Linux sẽ sử dụng nhiều bộ nhớ có sẵn, do đó không có giới hạn nào khác ngoài lừa đảo.
Robert

21

Phân bổ bộ nhớ tối đa cho máy docker của bạn từ (tùy chọn docker -> nâng cao)

Ảnh chụp màn hình của cài đặt nâng cao: Ảnh chụp màn hình của cài đặt nâng cao.

Điều này sẽ đặt giới hạn tối đa mà trình cắm dock tiêu thụ trong khi chạy các vùng chứa. Bây giờ hãy chạy hình ảnh của bạn trong vùng chứa mới với cờ -m = 4g cho 4 gigs ram trở lên. ví dụ

docker run -m=4g {imageID}

Hãy nhớ áp dụng các thay đổi tăng giới hạn ram. Khởi động lại docker và kiểm tra kỹ xem giới hạn ram đã tăng lên chưa. Đây có thể là một trong những yếu tố bạn không thấy sự gia tăng giới hạn ram trong các bộ chứa docker.


17

Nếu bạn muốn thay đổi vùng chứa mặc định và bạn đang sử dụng Virtualbox, bạn có thể thực hiện việc đó thông qua dòng lệnh / CLI:

docker-machine stop
VBoxManage modifyvm default --cpus 2
VBoxManage modifyvm default --memory 4096
docker-machine start
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.