Como aumentar a memória da máquina docker no Mac

108

Eu sou novo no Docker e estou tentando seguir este tutorial configurando MemSQL a partir de uma imagem Docker - http://docs.memsql.com/4.0/setup/docker/ . Estou em um Mac e o tutorial usa o boot2dockerque parece ter sido preterido.

A VM precisa de 4 GB de memória para funcionar. O tutorial especifica como fazer isso, boot2dockermas não consigo encontrar uma maneira de fazer isso com a docker-machine / docker toolbox.

Aqui está o comando que estou usando e o erro que estou obtendo apenas ao tentar seguir o tutorial sem alterar a configuração do boot2docker.

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

Respostas:

111

ao criar a máquina docker, você pode definir o tamanho da memória:

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

Avise-me se isso ajudar.

BMW
fonte
Este definitivamente parece ser o lugar certo para ajustar a alocação de memória. No entanto, ainda obtendo o mesmo erro após reiniciar esta VM. No check-systemprograma ( github.com/memsql/memsql-docker-quickstart/blob/master/… ), estou vendo essas linhas que determinariam esse erro. 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
Não foi possível fazer isso funcionar alterando a configuração, mas excluir e recriar a máquina docker vm conforme mostrado acima resolveu o problema!
DJElbow
Claro, eu limpo da segunda maneira, parece que não funciona mais.
BMW
178

Você pode fazer isso por meio da linha de comando. Por exemplo, para alterar a máquina do padrão 1cpu / 2.048 MB de RAM, execute:

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

Você pode então verificar suas configurações:

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

E para docker-machine inspectrelatar o estado correto das coisas, edite ~/.docker/machine/machines/default/config.jsonpara refletir suas alterações.

Ran Rubinstein
fonte
1
Isso funcionou mesmo quando a GUI (versão 5.0.16) não funcionou.
MikeF
6
Esta resposta deve estar no topo
nakajuice
5
Observe que depois que o comando for executado docker-machine inspect, não mostrará nenhuma alteração. No entanto, se você executar, docker statsverá que as alterações foram aplicadas.
slovit
@slovit e outros: você pode então modificar o config.jsonarquivo docker-machine para refletir o tamanho real. Exemplo: para default, conforme usado na solução de exemplo, modifique o ~/.docker/machine/machines/default/config.jsonarquivo de forma que a subpropriedade under Memory(e CPUse também modificada) Driverfor alterada para 4096. Então, docker-machine inspectmostrará o valor adequado.
ScriptAutomate
79

Para o Docker versão 1.12.1 (build: 12133) e superior no macOS, há uma opção para alterar CPU e RAM da IU e reiniciar o docker. Você pode encontrar as preferências na barra de ferramentas. Anexar imagens para maior clareza.

Passos: Preferências -> Avançado -> ajustar recursos -> Aplicar e reiniciar

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

guia avançada do docker (memória)

Srikar Appalaraju
fonte
3
Isso mudou para a guia Avançado. Obrigado por compartilhar isso.
GabLeRoux
Cara, isso era óbvio e completamente não intuitivo - obrigado!
AlienWebguy
Essas alterações também se aplicam se eu usar o bote com o virtualbox? Ou devo usar o VBoxManage apenas para ajustar o tamanho do mem?
Artur79
2
Existe uma linha de comando equivalente a esta? Eu tenho Docker para mac, mas aparentemente docker-machine ls não me dá nada, então não posso modificar a máquina padrão.
Andrea Bergonzo
42

Mantenedor da máquina Docker aqui. Não acho que o ajuste config.jsonmanual funcionará.

Suas duas opções são criar a máquina com o --virtualbox-memoryconjunto ou ajustar a memória da VM na GUI do VirtualBox ("Configurações> Sistema" para aquela VM, eu acho). Certifique-se de que a máquina esteja desligada e que haja um pequeno controle deslizante que funcione.

EDIT: Outra resposta mostra que você também pode fazer a operação in-loco a partir da linha de comando usando VBoxManage.

nathanleclaire
fonte
3
Isso funciona, mas observe que docker-machine inspectcontinuará relatando a quantidade original de memória mesmo após alterá-la na GUI do VirtualBox.
Tamlyn
2
Isso é verdade, para ter o docker-machine inspectrelatório da quantidade exata, você precisa editar (é daí que vem a informação). config.jsoninspect
nathanleclaire de
1
Fazer isso no Virtualbox é o mais simples
Niranjan Sonachalam
14

Outras respostas mostraram como alterar a memória usando VBoxManage:

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

Para confirmar a mudança na linha de comando:

VBoxManage showvminfo default | grep Memory

OU

docker-machine ssh default free
cpep
fonte
Olá, cpep, você pode editar sua resposta e formatar os blocos de código corretamente?
TT.
4

fox xhyve (outra virtualização em macos), você pode modificar a propriedade ~ / .docker / machine / default / config.json Driver / Memory (padrão para 1024) e reiniciar a máquina docker para aplicar as alterações

Dchekmarev
fonte
Eu encontrei embaixo ~/.docker/machine/machines/default/config.json. Obrigado 👍
Tarek N. Elsamni