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?
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
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
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
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