web-dev-qa-db-fra.com

Comment augmenter la taille du / dev / shm dans le conteneur Docker

Actuellement, lorsque je crée un nouveau conteneur Docker, la taille du répertoire de mémoire partagée est limitée à 64 Mo. Mais, je dois augmenter cette taille car mon application dépend de cette mémoire partagée. Existe-t-il un moyen d'augmenter la taille de/dev/shm dans le conteneur Docker? J'ai entendu dire que le 64 Mo est codé en dur dans le code du docker, comment installer le docker à partir de la source et modifier la valeur de/dev/shm?

32
user2521791

Vous pouvez modifier la taille de shm en passant le paramètre facultatif --shm-size à docker run commande. La valeur par défaut est 64 Mo.

par exemple:

docker run -it --shm-size=256m Oracle11g /bin/bash
16
Lijo Jacob

Si vous utilisez docker-compose, vous pouvez définir le your_service.shm_size valeur si vous souhaitez que votre conteneur utilise cette taille/dev/shm lorsque exécute ou your_service.build.shm_size lorsque bâtiment .

Exemple:

version: '3.5'
services:
  your_service:
    build:
      context: .
      shm_size: '2gb' <-- this will set the size when BUILDING
    shm_size: '2gb' <-- when RUNNING 

Lien vers la source .

10
Diego M.F.

Si vous utilisez docker-compose pour configurer votre environnement docker, il est également possible de définir la mémoire partagée dans le fichier de configuration docker-compose.yml (depuis la version 3.5 du format de fichier):

build:
  context: .
  shm_size: '2gb'

Plus d'informations: https://docs.docker.com/compose/compose-file/#shm_size

9
Jørgen Sivesind

Si quelqu'un utilise une ancienne version Docker antérieure à 1.10.0 et ne peut pas mettre à niveau pour une raison quelconque, il existe une solution de contournement que j'ai utilisée pour définir shm-size qui fonctionne bien pour moi (vous avez besoin des droits Sudo pour créer le montage sur l'hôte):

Sudo mkdir /mnt/dockershm
Sudo mount -t tmpfs -o size=1G tmpfs /mnt/dockershm
docker run -d -v /mnt/dockershm:/dev/shm dockerimagetorun:latest
1
Storm