Docker - AVISO: Não há suporte ao limite de troca

29

Estou executando o Docker (1.9.1) no Ubuntu 16.04. Quando eu corro docker infoa última linha da saída diz WARNING: No swap limit support.

INFO[0781] GET /v1.21/info                              
Containers: 0
Images: 0
Server Version: 1.9.1
Storage Driver: aufs
 Root Dir: /var/lib/docker/aufs
 Backing Filesystem: extfs
 Dirs: 0
 Dirperm1 Supported: true
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 4.4.0-62-generic
Operating System: Ubuntu 16.04.1 LTS (containerized)
CPUs: 2
Total Memory: 3.664 GiB
Name: lenovo
ID: A3ZV:2EVK:U5QB:O7CG:PEDL:SANK:X74X:QNLC:VOTK:GFDR:S24T:C5KT
WARNING: No swap limit support

O que esse aviso significa? Definitivamente, tenho uma partição de swap, como evidenciado, free -mhembora eu não entenda por que meu swap não tem entrada emavailable

total        used        free      shared  buff/cache   available
Mem:           3.7G        1.9G        182M        157M        1.6G           1.3G
Swap:          3.8G        2.9M        3.8G
Stephen C
fonte

Respostas:

29

O suporte ao limite de troca permite limitar a troca que o contêiner usa, consulte https://docs.docker.com/engine/admin/resource_constraints

De acordo com https://docs.docker.com/engine/installation/linux/linux-postinstall/#your-kernel-does-not-support-cgroup-swap-limit-capabilities :

Você pode ativar esses recursos no Ubuntu ou Debian seguindo estas instruções. A contabilidade de troca e memória incorre em uma sobrecarga de cerca de 1% da memória total disponível e em uma degradação geral de 10% no desempenho, mesmo se o Docker não estiver em execução.

1) Faça login no host Ubuntu ou Debian como um usuário com privilégios sudo.

2) Edite o /etc/default/grubarquivo. Adicione ou edite a GRUB_CMDLINE_LINUXlinha para adicionar os dois pares de valores-chave a seguir:

GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"

3) Atualize o GRUB.

$ sudo update-grub
Samizdis
fonte
3
Uma pequena adição: o servidor precisa ser reiniciado depois disso.
Crouching Kitten
3

Na minha instância do Google Cloud Compute, tive que fazer um pouco diferente da resposta aceita.

1) edite o arquivo /etc/default/grub.d/50-cloudimg-settings.cfg

sudo nano /etc/default/grub.d/50-cloudimg-settings.cfg

1.1) modificar ou criar a linha

GRUB_CMDLINE_LINUX_DEFAULT="console=ttyS0 cgroup_enable=memory swapaccount=1"

1.2) salvar

2) atualizar grupo

sudo update-grub

3) reiniciar

sudo reboot
Kai
fonte