So lösen Sie, wenn Sie mit einem neuen Container keine Verbindung zur Datenbank herstellen können, weil der Port dem vorhandenen Docker-Container zugewiesen ist

Was du machen willst

Ich möchte einem neuen Container einen Port zuweisen, da er bereits einem vorhandenen Container zugewiesen ist

Als ich versuchte, durch Aktualisieren der Middleware eine Verbindung zu einer neuen Version von DB herzustellen, wurde der Port von dem in der vorherigen Version erstellten Container belegt, und ich konnte keine Verbindung zu MySQL herstellen.

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

Die Fehlermeldung besagt, dass der Port bereits zugewiesen wurde. Sie können den Port des neuen Containers ändern, aber da er im Projekt vereinheitlicht ist, berühren Sie die Docker-Datei nicht Ich habe beschlossen, den vorhandenen Container zu löschen und ihn mit einem sauberen Zustand neu zu erstellen.

docker % docker ps -a   //Liste der Container, auch wenn gestoppt
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-Prozessbestätigung des von compose erstellten Betriebscontainers
hoge_mysql
PID    USER   TIME   COMMAND
----------------------------
2889   999    1:56   mysqld
docker % docker-compose stop //docker-Stoppen von Diensten, die mit compose erstellt wurden
Stopping hoge_mysql ... done

docker % docker-compose kill //docker-Erzwungener Stopp des durch Compose erstellten Containers

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-Stoppen Sie den durch Verfassen erstellten Container und löschen Sie den Container und das Netzwerk
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-Stellen Sie sicher, dass mit compose keine laufenden Container erstellt wurden

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 //Löschen Sie alle Container
Error response from daemon: You cannot remove a running container //Es können nicht alle gelöscht werden, wenn ein Container 5a06cd43f76166e8dc9c3517c3f6d8aeda7315f134b4d35865d893e85fa8ac79 ausgeführt wird. Stop the container before attempting removal or force remove

docker % docker stop 5a06cd43f761 //Stoppen Sie den Betrieb des Containers
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 ...//Löschen Sie alle Container erneut
5a06cd43f761
docker % docker ps -a //Stellen Sie sicher, dass alle Container gelöscht wurden
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
docker % docker-compose up //Nach dem Bau

Bau abgeschlossen

Zusammenfassung

Der von Docker-Compose erstellte Container wurde durch die Befehle stop, down und kill gestoppt, und der Container und das Netzwerk wurden gelöscht. Und für Container, die Docker-Compose nicht verwenden Wenn ich mit Docker ps -a nachgesehen habe und es ausgeführt wurde, habe ich es mit Docker Stop {Docker ID} gestoppt. Schließlich wurde Docker ps -aq | xargs Docker rm verwendet, um alle Container zu löschen und sie vollständig leer zu lassen. Als ich versuchte, den Status des Containers mit Docker ps -a und Docker-compose ps -a zu überprüfen, blieb der Container erhalten und das Netzwerk wurde nicht getrennt, sodass ich Stop and Kill ziemlich beharrlich ausführte. Wenn Sie den gewünschten Befehl nicht ausführen können, sollten Sie den Status des Containers häufig überprüfen und den Befehl ausführen.

Referenz

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

Recommended Posts

So lösen Sie, wenn Sie mit einem neuen Container keine Verbindung zur Datenbank herstellen können, weil der Port dem vorhandenen Docker-Container zugewiesen ist
[Docker] Erstellen, wenn der Quellcode auf dem Container gebunden ist
[Docker] So sehen Sie den Inhalt von Volumes. Starten Sie einen Container mit Root-Rechten.
[Lösung] Was tun, wenn ein Docker-Fehler angezeigt wird? FEHLER: Unter Unix: ///var/run/docker.sock kann keine Verbindung zum Docker-Dämon hergestellt werden. Wird der Docker-Dämon ausgeführt?
[Docker] Wenn Sie den Datenbankcontainer betreten und die Daten anzeigen, wird Japanisch als ??? angezeigt.
Auf Anforderung wird der Zugriff auf die Ressource beim Push mit Docker verweigert
Erstellen wir einen Docker-Container, der SSH auf die Mindestkonfiguration von CentOS 8 ausführen kann
Mit Pg_resetwal kann der PostgreSQL Docker-Container gestartet werden, wenn WAL fehlerhaft ist und nicht gestartet werden kann.
Sie können die Version der Projektfacette nicht von einem dynamischen Webmodul in x.x ändern. Wie man damit umgeht
[Docker] Stellt keine Verbindung zur MySQL Workbench her ... Einstellungen für die DB-Container-Portweiterleitung
So starten Sie einen Docker-Container mit einem in einer Batchdatei bereitgestellten Volume
Was zu tun ist, wenn es ungültig ist, weil es nicht mit einem '-' beginnt
So erhalten Sie einen Heapdump aus einem Docker-Container
So erstellen Sie einen Jenkins-Server mit einem Docker-Container unter CentOS 7 von VirtualBox und greifen von einem lokalen PC auf den Jenkins-Server zu
So löschen Sie den dem Benutzer zugeordneten Tweet, wenn Sie ihn gleichzeitig löschen
[Rails] [Docker] Kopieren und Einfügen ist in Ordnung! So erstellen Sie eine Rails-Entwicklungsumgebung mit Docker
[Docker] Wie man mit einem Container in Heroku aktualisiert und wie man mit Migrate Error umgeht
[Rails] Lösung, wenn bei Verwendung von Capybara mit Rspec der Fehler "undefined method` visit '" angezeigt wird
Eine Warnung wird angezeigt, wenn versucht wird, eine große Ganzzahl mit den speziellen Variablen $ 1, $ 2, $ 3 ... zu verwenden.
[Rails] Was ist zu tun, wenn Rails db: migrate nicht ausgeführt werden kann, da keine Tabelle vorhanden ist, auf die der externe Schlüssel verweist?
[Java] So unterbrechen Sie eine Zeile mit StringBuilder
Die Geschichte, wie ein Docker-Container mit GitHub-Aktionen in die GitHub-Paketregistrierung und den Docker-Hub verschoben wird
So schreiben Sie in die Modellklasse, wenn Sie mit PlayFramework Binärdaten in der Datenbank speichern möchten
So lösen Sie das Problem, wenn der Wert nicht gesendet wird, wenn das Formular in Schienen deaktiviert und gesendet wird
So reduzieren Sie die Programmlast ein wenig, wenn Sie Zeichen mit JAVA kombinieren
[Schienen] Was tun, wenn die Ansicht zusammenbricht, wenn eine Nachricht mit der Fehlermethode angezeigt wird?
So geben Sie db beim Erstellen einer App mit Rails an
[Docker] Löschen Sie nur das Volume, das einem bestimmten Container zugeordnet ist
Die Zeit ist falsch mit der Anwendung, die auf dem Docker-Container gestartet wurde
docker-compose.yml, wenn Sie MySQL auf Docker laufen lassen möchten
[Docker] Zugriff auf den Host aus dem Container heraus. http: //host.docker.internal:
So führen Sie die Verarbeitung von Aktionsattributen nur aus, wenn der Bestätigungsdialog mit h: commandButton in Ordnung ist
Ich kann keine Verbindung mehr zu einer VM mit einem Docker-Container herstellen, der eine Verbindung über SSH herstellen kann
Als ich versuchte, ein Composer-Update im Docker-Container durchzuführen, wurde ich wütend auf proc_open (): fork failed
Was tun, wenn die App nicht mit der neuesten Rails-Version erstellt wurde, die bei neuen Rails installiert wurde?