Docker - AVERTISSEMENT: aucune prise en charge de limite de swap

29

J'utilise Docker (1.9.1) sur Ubuntu 16.04. Quand j'exécute, docker infola dernière ligne de la sortie dit 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

Que signifie cet avertissement? J'ai définitivement une partition de swap, comme en témoigne free -mhbien que je ne comprenne pas pourquoi mon swap n'a pas d'entrée sousavailable

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
la source

Réponses:

29

La prise en charge de la limite de swap vous permet de limiter le swap utilisé par le conteneur, voir https://docs.docker.com/engine/admin/resource_constraints

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

Vous pouvez activer ces capacités sur Ubuntu ou Debian en suivant ces instructions. La comptabilité de la mémoire et des swaps entraîne une surcharge d'environ 1% de la mémoire totale disponible et une dégradation globale des performances de 10%, même si Docker n'est pas en cours d'exécution.

1) Connectez-vous à l'hôte Ubuntu ou Debian en tant qu'utilisateur avec les privilèges sudo.

2) Modifiez le /etc/default/grubfichier. Ajoutez ou modifiez la GRUB_CMDLINE_LINUXligne pour ajouter les deux paires clé-valeur suivantes:

GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"

3) Mettez à jour GRUB.

$ sudo update-grub
Samizdis
la source
3
Un petit ajout: le serveur doit être redémarré après cela.
Crouching Kitten
3

Sur mon instance de Google Cloud Compute, j'ai dû le faire un peu différemment de la réponse acceptée.

1) éditez le fichier /etc/default/grub.d/50-cloudimg-settings.cfg

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

1.1) modifier ou créer la ligne

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

1.2) enregistrer

2) Mettre à jour le groupe

sudo update-grub

3) redémarrer

sudo reboot
Kai
la source