Cách tăng bộ nhớ docker-máy Mac


108

Tôi mới sử dụng Docker và đang cố gắng xem qua hướng dẫn này để thiết lập MemSQL từ hình ảnh Docker - http://docs.memsql.com/4.0/setup/docker/ . Tôi đang sử dụng máy Mac và hướng dẫn sử dụng boot2dockerdường như đã không còn được dùng nữa.

Máy ảo cần bộ nhớ 4GB để chạy. Hướng dẫn chỉ định cách thực hiện việc này với boot2dockernhưng tôi không thể tìm thấy cách thực hiện việc này với hộp công cụ docker-machine / docker.

Đây là lệnh tôi đang sử dụng và lỗi tôi gặp phải khi cố gắng xem qua hướng dẫn mà không thay đổi cấu hình boot2docker.

docker run --rm --net=host memsql/quickstart check-system
Error: MemSQL requires at least 4 GB of memory to run.

Câu trả lời:


111

khi bạn tạo máy docker, bạn có thể chỉ định kích thước bộ nhớ:

docker-machine create -d virtualbox --virtualbox-memory 4096 default

Hãy cho tôi biết nếu điều này sẽ giúp.


Đây chắc chắn là nơi thích hợp để điều chỉnh phân bổ bộ nhớ. Tuy nhiên, vẫn gặp lỗi tương tự sau khi khởi động lại máy ảo này. Trong check-systemchương trình ( github.com/memsql/memsql-docker-quickstart/blob/master/… ), tôi thấy những dòng này sẽ xác định lỗi này. ONE_MB = 1024 ** 2, virtual_memory = psutil.virtual_memory(), if virtual_memory.total < ONE_MB * 3700: sys.stderr.write("Error: MemSQL requires at least 4 GB of memory to run.\n").
DJElbow

2
Không thể làm cho điều này hoạt động bằng cách thay đổi cấu hình, nhưng xóa và tạo lại máy docker vm như được hiển thị ở trên đã giải quyết được vấn đề!
DJElbow

Chắc chắn, tôi làm sạch theo cách thứ hai, có vẻ như nó không hoạt động nữa.
BMW

178

Bạn có thể thực hiện việc này thông qua dòng lệnh. Ví dụ, để thay đổi máy từ chạy mặc định 1cpu / 2048MB RAM:

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

Sau đó, bạn có thể kiểm tra cài đặt của mình:

VBoxManage showvminfo default | grep Memory
VBoxManage showvminfo default | grep CPU

docker-machine inspectđể báo cáo trạng thái chính xác của mọi thứ, hãy chỉnh sửa ~/.docker/machine/machines/default/config.jsonđể phản ánh những thay đổi của bạn.


1
Điều này hoạt động ngay cả khi GUI (phiên bản 5.0.16) không hoạt động.
MikeF

6
Câu trả lời này nên ở phía trên cùng
nakajuice

5
Lưu ý rằng sau khi lệnh được thực thi docker-machine inspectsẽ không hiển thị bất kỳ thay đổi nào. Tuy nhiên, nếu bạn chạy, docker statsbạn sẽ thấy rằng các thay đổi đã được áp dụng.
slovit.

@slovit và các tệp khác: Sau đó, bạn có thể sửa đổi tệp docker-machine config.jsonđể phản ánh kích thước thực. Ví dụ: for default, như được sử dụng trong giải pháp ví dụ, hãy sửa đổi ~/.docker/machine/machines/default/config.jsontệp để thuộc tính con Memory(và CPUnếu cũng được sửa đổi) bên dưới Driverđược thay đổi thành 4096. Sau đó, docker-machine inspectsẽ hiển thị giá trị thích hợp.
ScriptAutomate

80

Đối với phiên bản Docker 1.12.1 (bản dựng: 12133) và cao hơn trên macOS, có một tùy chọn để thay đổi CPU và RAM từ giao diện người dùng và khởi động lại docker. Bạn có thể tìm thấy các tùy chọn từ thanh công cụ. Đính kèm hình ảnh cho rõ nét.

Cập nhật: Tháng 8 năm 2020: Tùy chọn -> Tài nguyên (cảm ơn bạn @ swedge218)

Bước Cũ (có thể hiện không còn tồn tại): Tùy chọn -> Nâng cao -> điều chỉnh tài nguyên -> Áp dụng & Khởi động lại

https://www.dropbox.com/s/znltd1v4r00nfpu/Screenshot%202017-03-24%2012.12.58.png?dl=0

tab nâng cao docker (bộ nhớ)


3
Điều này đã chuyển sang tab Nâng cao. Cảm ơn vì đã chia sẻ điều này.
GabLeRoux

Người đàn ông đó là cả hai rõ ràng và hoàn toàn không trực quan - cảm ơn bạn!
AlienWebguy

Những thay đổi đó cũng áp dụng nếu tôi sử dụng xuồng ba lá với virtualbox? Hay tôi chỉ nên sử dụng VBoxManage để điều chỉnh kích thước mem?
Artur79

2
Có một dòng lệnh tương đương với điều này? Tôi có Docker cho mac nhưng dường như docker-machine ls không cung cấp cho tôi gì nên tôi không thể sửa đổi máy mặc định.
Andrea Bergonzo

Đó là Preferences -> Tài nguyên tính đến ngày hôm nay.
swedge218

42

Người bảo trì Máy Docker ở đây. Tôi không nghĩ rằng điều chỉnhconfig.json thủ công sẽ hoạt động.

Hai tùy chọn của bạn là tạo máy với --virtualbox-memorythiết lập hoặc điều chỉnh bộ nhớ của máy ảo trong VirtualBox GUI ("Cài đặt> Hệ thống" cho máy ảo đó tôi nghĩ). Đảm bảo rằng máy đã tắt nguồn và phải có một thanh trượt nhỏ hoạt động.

CHỈNH SỬA: Một câu trả lời khác cho thấy rằng bạn cũng có thể thực hiện thao tác tại chỗ từ dòng lệnh bằng cách sử dụng VBoxManage.


3
Điều này hoạt động nhưng lưu ý rằng docker-machine inspectsẽ tiếp tục báo cáo dung lượng bộ nhớ ban đầu ngay cả sau khi thay đổi nó trong VirtualBox GUI.
Tamlyn

2
Đó là sự thật, để có docker-machine inspectbáo cáo số lượng chính xác, bạn làm phải chỉnh sửa config.json(đó là nơi inspectnhận thông tin).
nathanleclaire

1
Làm việc đó trong VirtualBox là đơn giản nhất
Niranjan Sonachalam

14

Tôi không thể nhận được các câu trả lời khác để làm việc. Điều duy nhất phù hợp với tôi là xóa máy mặc định và tạo lại nó với nhiều bộ nhớ hơn.

docker-machine rm default
docker-machine create -d virtualbox --virtualbox-memory=4096 --virtualbox-cpu-count=2 --virtualbox-disk-size=50000 default

Bản sửa lỗi này được tìm thấy tại đây: https://www.ibm.com/developerworks/community/blogs/jfp/entry/Using_Docker_Machine_On_Windows?lang=vi


14

Các câu trả lời khác cho thấy cách thay đổi bộ nhớ bằng VBoxManage:

docker-machine stop default
VBoxManage modifyvm default --memory 4096
docker-machine start default

Để xác nhận thay đổi từ dòng lệnh:

VBoxManage showvminfo default | grep Memory

HOẶC LÀ

docker-machine ssh default free

Xin chào cpep, bạn có thể chỉnh sửa câu trả lời của mình và định dạng các khối mã đúng cách không?
TT.

4

fox xhyve (một ảo hóa khác trong macos) bạn có thể sửa đổi thuộc tính ~ / .docker / machine / default / config.json thuộc tính Driver / Memory (mặc định là 1024) sau đó khởi động lại máy docker để áp dụng các thay đổi


Tôi tìm thấy nó dưới đây ~/.docker/machine/machines/default/config.json. Cảm ơn 👍
Tarek N. Elsamni
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.