Solution lorsque la connexion à la base de données n'est pas possible avec un nouveau conteneur car le port est affecté au conteneur docker existant

Chose que tu veux faire

Je souhaite attribuer un port à un nouveau conteneur car il est déjà attribué à un conteneur existant

Lorsque j'ai essayé de me connecter à une nouvelle version de DB en mettant à jour le middleware, le port a été pris par le conteneur intégré dans la version précédente et je n'ai pas pu me connecter à mysql.

WARNING: Image for service hoge was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`.
Recreating hoge_mysql ... done
Creating hoge_apache_php74 ...
Creating hoge_apache_php74 ... error

ERROR: for hoge_apache_php74  Cannot start service web74: driver failed programming external connectivity on endpoint hoge_apache_php74 (f9dfceb538d7f688ad0d26269810a7d889): Bind for 0.0.0.0:8081 failed: port is already allocated

ERROR: for web74  Cannot start service web74: driver failed programming external connectivity on endpoint hoge_apache_php74 (f9dfceb538d7f841d4b2a7d26269810a7d889): Bind for 0.0.0.0:8081 failed: port is already allocated
ERROR: Encountered errors while bringing up the project.

Bind for 0.0.0.0:8081 failed: port is already allocated

Le message d'erreur indique que le port a déjà été attribué. Vous pouvez changer le port du nouveau conteneur, mais comme il est unifié dans le projet, vous ne touchez pas le Dockerfile J'ai décidé de supprimer le conteneur existant et de le reconstruire avec un état propre.

docker % docker ps -a   //Liste des conteneurs, y compris à l'arrêt
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
d13d68d47e2c        docker_web74        "/sbin/init"             About an hour ago   Created                                      hoge_apache_php74
bb1e84be87ce        docker_mysql        "docker-entrypoint.s…"   About an hour ago   Up About an hour    0.0.0.0:3306->3306/tcp   hoge_mysql
5a06cd43f761        docker_web          "apache2-foreground"     2 hours ago         Up 2 hours          0.0.0.0:8081->80/tcp     hoge_apache_php

docker % docker-compose top  //docker-Confirmation de processus du conteneur d'exploitation créé par compose
hoge_mysql
PID    USER   TIME   COMMAND
----------------------------
2889   999    1:56   mysqld
docker % docker-compose stop //docker-Arrêt des services créés avec compose
Stopping hoge_mysql ... done

docker % docker-compose kill //docker-Arrêt forcé du conteneur créé par compose

docker % docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS                  NAMES
d13d68d47e2c        docker_web74        "/sbin/init"             About an hour ago   Created                                           hoge_apache_php74
bb1e84be87ce        docker_mysql        "docker-entrypoint.s…"   About an hour ago   Exited (0) 2 minutes ago                          hoge_mysql
5a06cd43f761        docker_web          "apache2-foreground"     2 hours ago         Up 2 hours                 0.0.0.0:8081->80/tcp   hoge_apache_php

docker % docker-compose down //docker-Arrêtez le conteneur créé par composer et supprimez le conteneur et le réseau
WARNING: Found orphan containers (hoge_apache_php) for this project. If you removed or renamed this service in your compose file, you can run this command with the --remove-orphans flag to clean it up.
Removing hoge_apache_php74 ... done
Removing hoge_mysql        ... done
Removing network docker_default
ERROR: error while removing network: network docker_default id 46a29f96ef988d2366e0af50d1eb18690bff5db87e7b7cacee8e91d07097702e has active endpoints
docker % docker-compose top //docker-Assurez-vous qu'aucun conteneur en cours d'exécution n'a été créé avec compose

docker % docker-compose ps -a
Name   Command   State   Ports
------------------------------

docker % docker ps -a
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS                  NAMES
5a06cd43f761        docker_web          "apache2-foreground"   2 hours ago         Up 2 hours          0.0.0.0:8081->80/tcp   hoge_apache_php

docker % docker ps -aq | xargs docker rm //Supprimer tous les conteneurs
Error response from daemon: You cannot remove a running container //Impossible de tout supprimer s'il existe un conteneur en cours d'exécution 5a06cd43f76166e8dc9c3517c3f6d8aeda7315f134b4d35865d893e85fa8ac79. Stop the container before attempting removal or force remove

docker % docker stop 5a06cd43f761 //Arrêtez le fonctionnement du conteneur
5a06cd43f761
docker % docker ps -a
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS                     PORTS               NAMES
5a06cd43f761        docker_web          "apache2-foreground"   2 hours ago         Exited (0) 4 seconds ago                       hoge_apache_php
docker % docker ps -aq |xargs docker rm ...//Supprimer à nouveau tous les conteneurs
5a06cd43f761
docker % docker ps -a //Assurez-vous que tous les conteneurs ont été supprimés
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
docker % docker-compose up //Up après avoir été construit

Construction terminée

Sommaire

Le conteneur créé par docker-compose a été arrêté par les commandes stop, down et kill, et le conteneur et le réseau ont été supprimés. Et pour les conteneurs qui n'utilisent pas docker-compose Si j'ai vérifié avec docker ps -a et qu'il était en cours d'exécution, je l'ai arrêté avec docker stop {docker ID}. Enfin, docker ps -aq | xargs docker rm a été utilisé pour supprimer tous les conteneurs, les laissant complètement vides. Quand je l'ai essayé en vérifiant l'état du conteneur avec docker ps -a et docker-compose ps -a, le conteneur est resté et le réseau n'était pas déconnecté, j'ai donc exécuté stop and kill de manière assez persistante. Si vous ne pouvez pas exécuter la commande que vous souhaitez effectuer, vous devez vérifier fréquemment l'état du conteneur et exécuter la commande.

référence

https://qiita.com/etaroid/items/88ec3a0e2d80d7cdf87a https://qiita.com/nimusukeroku/items/72bc48a8569a954c7aa2 https://qiita.com/tettsu__/items/302a11fe848dc8fe1f55

Recommended Posts

Solution lorsque la connexion à la base de données n'est pas possible avec un nouveau conteneur car le port est affecté au conteneur docker existant
[Docker] Comment créer lorsque le code source est monté en liaison sur le conteneur
[Docker] Comment voir le contenu des volumes. Démarrez un conteneur avec les privilèges root.
[Solution] Que faire si vous obtenez une erreur Docker "ERREUR: Impossible de se connecter au démon Docker sous unix: ///var/run/docker.sock. Le démon docker est-il en cours d'exécution?"
[Docker] Lorsque vous entrez dans le conteneur de base de données et que vous regardez les données, le japonais s'affiche sous la forme ???
Lorsque l'accès demandé à la ressource est refusé lors de la transmission avec Docker
Créons un conteneur Docker qui peut SSH à la configuration minimale de CentOS 8
Pg_resetwal peut être utilisé pour démarrer le conteneur Docker PostgreSQL lorsque WAL est cassé et ne peut pas être démarré.
Vous ne pouvez pas changer la version de facette du projet d'un module Web dynamique à x.x. Comment faire avec
[Docker] Ne se connecte pas à MySQL workbench ... Paramètres de transfert de port du conteneur de base de données
Comment démarrer un conteneur Docker avec un volume monté dans un fichier de commandes
Que faire quand est invalide car il ne commence pas par un "-"
Comment obtenir un heapdump à partir d'un conteneur Docker
Comment créer un serveur Jenkins avec un conteneur Docker sur CentOS 7 de VirtualBox et accéder au serveur Jenkins à partir d'un PC local
Comment supprimer le tweet associé à l'utilisateur lorsque vous le supprimez en même temps
[Rails] [Docker] Le copier-coller est OK! Comment créer un environnement de développement Rails avec Docker
[Docker] Comment mettre à jour à l'aide d'un conteneur dans Heroku et comment gérer l'erreur de migration
[Rails] Solution lorsque l'erreur "visite de la méthode non définie" "apparaît lors de l'utilisation de Capybara avec Rspec
Un avertissement s'affiche lorsque vous essayez d'utiliser un entier énorme avec les variables spéciales $ 1, $ 2, $ 3 ...
[Rails] Que faire lorsque les rails db: migrate ne peuvent pas être effectués car aucune table n'est référencée par la clé externe
[Java] Comment rompre une ligne avec StringBuilder
L'histoire du transfert d'un conteneur Docker vers le registre de packages GitHub et Docker Hub avec des actions GitHub
Comment écrire dans la classe Model lorsque vous souhaitez enregistrer des données binaires dans DB avec PlayFramework
Comment résoudre le problème lorsque la valeur n'est pas envoyée lorsque le formulaire est désactivé dans les rails et envoyé
Comment réduire même un peu la charge du programme lors de la combinaison de caractères avec JAVA
[Rails] Que faire lorsque la vue se réduit lorsqu'un message est affiché avec la méthode des erreurs
Comment spécifier la base de données lors de la création d'une application avec des rails
[Docker] Supprimer uniquement le volume associé à un conteneur spécifique
L'heure ne va pas avec l'application lancée sur le conteneur Docker
docker-compose.yml lorsque vous voulez garder mysql en cours d'exécution avec docker
[Docker] Comment accéder à l'hôte depuis l'intérieur du conteneur. http: //host.docker.internal:
Comment exécuter le traitement des attributs d'action uniquement lorsque la boîte de dialogue de confirmation avec h: commandButton est OK
Je ne peux plus me connecter à une VM avec un conteneur Docker pouvant se connecter via SSH
Quand j'ai essayé de composer une mise à jour dans le conteneur Docker, je me suis fâché avec proc_open (): fork a échoué
Que faire si l'application n'est pas créée avec la dernière version de Rails installée lorsque les rails sont neufs