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.

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.


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.


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)


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.


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

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


Eu encontrei embaixo ~/.docker/machine/machines/default/config.json. Obrigado 👍
Tarek N. Elsamni
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.