[LINUX] swapon failed: Que faire si vous vous fâchez contre l'opération non autorisée

Statut

J'utilisais Laradock sur une instance EC2 d'AWS pour créer un environnement de développement local pour Laravel. Après avoir construit l'environnement Laradock, démarrez le conteneur avec docker-compose up -d nginx mysql. Lorsque j'ai essayé de me connecter à "laradock_workspace_1" avec docker-compose exec workspace bash et de générer Laravel, l'erreur suivante s'est produite.

Le type d'instance EC2 est "t2.micro" (RAM 1 Go) et l'AMI est Amazon Linux 2.


$ root@4e964ed4f2ce: composer create-project --prefer-dist laravel/laravel ./
Installing laravel/laravel (v7.0.0)
  - Installing laravel/laravel (v7.0.0): Downloading (100%)         
    proc_open(): fork failed - Cannot allocate memory
    The archive may contain identical file names with different capitalization (which fails on case insensitive filesystems)
    Unzip with unzip command failed, falling back to ZipArchive class
The following exception is caused by a lack of memory or swap, or not having swap configured
Check https://getcomposer.org/doc/articles/troubleshooting.md#proc-open-fork-failed-errors for details

PHP Warning:  proc_open(): fork failed - Cannot allocate memory in phar:///usr/local/bin/composer/vendor/symfony/console/Application.php on line 952

Warning: proc_open(): fork failed - Cannot allocate memory in phar:///usr/local/bin/composer/vendor/symfony/console/Application.php on line 952
                                                     
  [ErrorException]                                   
  proc_open(): fork failed - Cannot allocate memory  
                                                     

create-project [-s|--stability STABILITY] [--prefer-source] [--prefer-dist] [--repository REPOSITORY] [--repository-url REPOSITORY-URL] [--dev] [--no-dev] [--no-custom-installers] [--no-scripts] [--no-progress] [--no-secure-http] [--keep-vcs] [--remove-vcs] [--no-install] [--ignore-platform-reqs] [--] [<package>] [<directory>] [<version>]

Je l'ai déjà vu, j'ai donc essayé de créer un fichier d'échange mais cela n'a pas fonctionné.

Le conteneur en cours d'exécution ressemble à ceci.


[ec2-user@ip-172-31-47-6 laradock]$ sudo docker-compose ps
           Name                          Command              State                               Ports                            
-----------------------------------------------------------------------------------------------------------------------------------
laradock_docker-in-docker_1   dockerd-entrypoint.sh           Up      2375/tcp, 2376/tcp                                           
laradock_mysql_1              docker-entrypoint.sh mysqld     Up      0.0.0.0:3306->3306/tcp, 33060/tcp                            
laradock_nginx_1              /bin/bash /opt/startup.sh       Up      0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp, 0.0.0.0:81->81/tcp 
laradock_php-fpm_1            docker-php-entrypoint php-fpm   Up      9000/tcp                                                     
laradock_workspace_1          /sbin/my_init                   Up      0.0.0.0:2222->22/tcp, 0.0.0.0:8001->8000/tcp,                
                                                                      0.0.0.0:8080->8080/tcp                       

Ce que j'ai essayé

Essayez de créer un fichier d'échange normalement.

Utilisation de la mémoire (affichage Mo) Aucun espace de swap n'est actuellement alloué.


$ root@4e964ed4f2ce:/var/www# free -m
              total        used        free      shared  buff/cache   available
Mem:            983         566         217           3         200         232
Swap:             0           0           0

Créer un fichier pour l'espace d'échange

$ root@4e964ed4f2ce:/var/www# /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 14.8802 s, 72.2 MB/s

Définissez le fichier créé appelé swap.1 dans la zone d'échange

$ root@4e964ed4f2ce:/var/www# /sbin/mkswap /var/swap.1
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=450a4e24-3455-4466-a6e0-5daf190cdad3

Activer l'espace d'échange

root@4e964ed4f2ce:/var/www# /sbin/swapon /var/swap.1
swapon: /var/swap.1: insecure permissions 0644, 0600 suggested.
swapon: /var/swap.1: swapon failed: Operation not permitted

Ensuite, l'erreur «swapon failed: Operation not allowed» apparaît et l'activation de la zone d'échange échoue. Puisqu'il s'agit d'un problème d'autorisation, je l'ai essayé avec sudo, mais le résultat n'a pas changé. Il semble que cela puisse être résolu en altérant les paramètres d'autorisation du système d'exploitation répertoriés dans le docker, mais je ne veux pas altérer les parties que je ne comprends pas tellement ...

Solution

La cause de l'échange est en premier lieu le manque de mémoire physique. Au lieu de créer un fichier d'échange et d'ajouter de la mémoire virtuelle, nous avons augmenté EC2. Type d'instance: t2.micro-> t2.small Je pense qu'il n'y a pas de problème car le taux horaire ne change qu'environ 1 yen.

Type d'instance RAM(GB) Tarification Linux en ligne
t2.micro 1 0.0116 USD par heure
t2.small 2 0.023 USD par heure

La page que j'ai utilisée comme référence

Contre-mesures lorsque la mémoire ne peut pas être allouée apparaît dans Laravel [Correspond à l'erreur opération Docker non autorisée](https://bmf-tech.com/posts/Docker%E3%81%AEOperation%20not%20permitted%E3%81%A8%E3%81%84%E3 % 81% 86% E3% 82% A8% E3% 83% A9% E3% 83% BC% 08% E3% 81% AB% E5% AF% BE% E5% BF% 9C% E3% 81% 99% E3 % 82% 8B)

Recommended Posts

swapon failed: Que faire si vous vous fâchez contre l'opération non autorisée
Que faire si vous obtenez Impossible de récupérer l'URL 443 avec pip
Que faire si vous obtenez une erreur de décodage Unicode avec l'installation de pip
Que faire si vous vous perdez dans la référence de fichier avec FileNotFoundError
Que faire si vous vous fâchez avec TensorFlow v2 sans l'attribut "app"
Que faire lorsque TypeError se produit au minimum et au maximum de numpy
Que faire si vous obtenez une erreur lors de l'installation de python avec pyenv
Que faire si vous obtenez «Python non configuré». Utilisation de PyDev dans Eclipse
Que faire lorsque vous vous fâchez avec "Value Error: unknown local: UTF-8" dans python manage.py syncdb
Que faire lorsque vous vous fâchez que libxml / xmlversion.h n'existe pas lorsque vous mettez lxml avec pip
Que faire si Combinaisons devient «couverture inconnue»
Que faire si vous ne pouvez pas trier les fichiers avec des indices
Que faire si vous obtenez une erreur OpenSSL lors de l'installation de Python 2 avec pyenv
Que faire si vous obtenez une erreur d'importation lors de l'importation de matplotlib avec Jupyter
Que faire si vous ne pouvez pas installer pyaudio avec pip #Python
Que faire si vous obtenez moins zéro en Python
Que faire si vous ne pouvez pas construire un projet avec Maven
Que faire si vous obtenez une erreur non définie lorsque vous essayez d'utiliser pip avec pyenv
Que faire si vous vous fâchez contre les `` déclarations '' doivent être une liste 2D ... dans la flèche matplotlib
Que faire si vous vous mettez en colère si vous n'avez pas libxml / xmlversion.h lors de l'installation de lxml sur CentOS
Que faire si l'option -f de grep ne fonctionne pas
Que faire si vous ne parvenez pas à envoyer un e-mail à Yahoo avec Python.
Que faire si vous êtes bloqué pendant l'installation d'Anaconda sur Linux
Que faire si l'installation de pyenv ne se poursuit pas avec une erreur
Que faire si vous obtenez une erreur lors du chargement de mnist
Que faire si vous ne pouvez pas installer avec pip dans l'environnement babun
Que faire lorsque le shell pipenv devient impossible
Que faire si vous êtes en colère contre "le backend Gtk * nécessite l'installation de pygtke" même si pygtk est inclus dans matplotlib
Que faire si vous obtenez "La session n'a pas pu être ouverte" lors de l'installation de CentOS sur VirtualBox
Que faire si vous obtenez un avertissement "Mauvaise plateforme Python" lors de l'utilisation de Python avec l'EDI NetBeans
Que faire si vous obtenez une erreur "Aucune version trouvée" sur pipenv
Que faire si vous ne pouvez pas installer mysqlclient
Aucun module nommé Que faire si vous obtenez "libs.resources"
ModuleNotFoundError: No module Que faire si vous obtenez 'sensorflow.contrib'
Liens pour faire ce que vous voulez avec Sublime Text
Que faire si sys / cdefs.h n'existe pas
Que faire si pyenv n'est pas activé (zsh)
Que faire lorsqu'une erreur "service inconnu" est renvoyée par le serveur gRPC
Que faire quand "Aucun noyau pour le langage python trouvé" apparaît dans Hydrogen
Que faire si vous obtenez une erreur de mémoire lors de la conversion de PySparkDataFrame en PandasDataFrame
Que faire si vous obtenez "(35, 'Erreur de connexion SSL')" dans pycurl (l'un d'entre eux)
Que faire si vous obtenez une erreur lors de l'importation de matplotlib en Python (Mac)
Que faire si vous obtenez l'erreur ʻERR_FEATURE_UNAVAILABLE_ON_PLATFORM` lors de l'utilisation de ts-node-dev sous Linux
Que faire si vous exécutez python sur IntelliJ et quittez avec une erreur
Que faire si vous recevez une erreur d'appel avec trop d'arguments d'entrée à faire et retourner dans un test de golang
Que faire si vous obtenez l'erreur "Erreur: opencv3: Ne prend pas en charge la construction des wrappers Python 2 et 3" lors de l'installation d'openCV 3
[AWS] Que faire lorsque vous souhaitez piper avec Lambda
Que faire si vous êtes accro aux codes de caractères Windows
Que faire si vous ne pouvez pas vous connecter en tant que root
Que faire si vous ne pouvez pas utiliser le WiFi sous Linux
Remède facile lorsque vous perdez votre paire de clés EC2
Que faire lorsque vous obtenez une erreur indiquant «Échec temporaire de la résolution du nom» sous Linux
[Environnement de développement] Si vous ne pouvez pas migrer php artisan avec l'opération non autorisée, vérifiez les autorisations!
Que faire lorsque swagger-codegen est terminé avec python et Erreur d'importation: aucun module nommé n'apparaît
Que faire si vous obtenez une erreur Impossible de récupérer le lien métallique pour le référentiel avec yum
Que faire si vous obtenez une erreur non définie: l'objet 'Module_six_moves_urllib_parse' n'a pas d'attribut 'urlencode' sur MacOS
Que faire si vous obtenez une erreur lors de l'exécution de "certbot renouveler" dans l'environnement CakePHP
Que faire si yum casse
Que faire avec l'installation de Magics
Que faire avec la sortie de PYTHON?