Po uruchomieniu docker-compose up
w moim projekcie Docker kończy się niepowodzeniem z następującym komunikatem:
Error starting userland proxy: listen tcp 0.0.0.0:3000: bind: address already in use
netstat -pna | grep 3000
pokazuje to:
tcp 0 0 0.0.0.0:3000 0.0.0.0:* LISTEN -
Już próbowałem docker-compose down
, ale to nie pomaga.
ubuntu
docker
ubuntu-14.04
bind
docker-compose
Ngoral
źródło
źródło
sudo netstat -pna | grep 3000
aby uzyskać proces, który nasłuchuje.sudo
aby zobaczyć nazwę procesu.sudo
można zmienić wyjście :)Odpowiedzi:
W twoim przypadku był to inny proces, który korzystał z portu i jak wskazano w komentarzach,
sudo netstat -pna | grep 3000
pomógł ci w rozwiązaniu problemu.Podczas gdy w innych przypadkach (sam się z tym spotkałem wielokrotnie), jest to przeważnie ten sam kontener działający w innym przypadku. W tym przypadku
docker ps
było to bardzo pomocne, ponieważ często zostawiałem te same kontenery działające w innych katalogach, a następnie próbowałem uruchomić ponownie w innych miejscach, w których były używane te same nazwy kontenerów.Jak
docker ps
mi pomogło:docker rm -f $(docker ps -aq)
to krótkie polecenie, którego używam do usuwania wszystkich kontenerów.Edycja: dodano, jak
docker ps
mi pomogło.źródło
docker-compose down
pomagadocker-compose up
. Natomiast w mojej odpowiedzi radzę znaleźć już uruchomiony kontener i podjąć pożądane działania. Uznałem za stosowne, aby je usunąć, jeśli ktoś nie chce usunąć, zamiast tegorm
używa się go,stop
aby je zatrzymać.tensorflow/tensorflow
będą działać obrazy. Jak mogę skonfigurować mój obraz, aby działał na innym porcie. Próbowałem tego:docker run -it -d -p 8888:8000 tensorflow/tensorflow
powiązałem port 8888 z mojego obrazu z 8000 na kliencie, ale nie działa.-d
opcji. Teraz porty są widoczne jakoHOST:CONTAINER
. Dlatego powinieneś biecdocker run -it -p 8000:8888
Pomogło mi to:
docker-compose down # Stop container on current dir if there is a docker-compose.yml docker rm -fv $(docker ps -aq) # Remove all containers sudo lsof -i -P -n | grep <port number> # List who's using the port
a następnie:
kill -9 <process id>
(macOS) lubsudo kill <process id>
(Linux).Źródło: komentarz użytkownika Rub21 .
źródło
docker rm -fv $(docker ps -aq)
ta linia była wszystkim, czego potrzebowałem. DziękiMiałem ten sam problem
docker-compose down --rmi all
(w tym samym katalogu, w którym uruchamiasz docker-compose)pomaga
źródło
down
jest to ostatnia rzecz, którą zwykle chcesz zrobić. Utrata obecnego stanu to nie cukier.W systemie Linux / Unix:
Proste wyszukiwanie narzędzia linux za pomocą następującego polecenia
Pokaże przetwarzanie działające na tym porcie, a następnie zabije ten proces za pomocą PID (poszukaj PID w wierszu) tego procesu.
źródło
Miałem ten sam problem. Naprawiłem to, zatrzymując usługę Apache2 na moim hoście.
źródło
W moim przypadku tak było
I wszystko, czego potrzebuję, to wyłączyć nasłuchiwanie debugowania w burzy php
źródło
W niektórych przypadkach krytyczne jest przeprowadzenie dokładniejszego debugowania problemu przed zatrzymaniem kontenera lub zabiciem procesu.
Rozważ skorzystanie z poniższej listy kontrolnej:
1) Sprawdź bieżące środowisko Docker Compose
Run
docker-compose ps
.Jeśli port jest używany przez inny pojemnik, zatrzymaj go
docker-compose stop <service-name-in-compose-file>
lub usuń, zastępującstop
gorm
.2) Sprawdź kontenery działające poza bieżącym obszarem roboczym
Uruchom,
docker ps
aby zobaczyć listę wszystkich kontenerów uruchomionych na Twoim hoście.Jeśli okaże się, że port jest używany przez inny kontener, możesz go zatrzymać za pomocą
docker stop <container-id>
.(*) Ponieważ nie jesteś objęty zakresem
compose
środowiska źródłowego - dobrą praktyką jest najpierw użycie docker inspect, aby zebrać więcej informacji o kontenerze, który zamierzasz zatrzymać.3) Sprawdź, czy port jest używany przez inne procesy działające na hoście
Na przykład, jeśli port to 6379, uruchom:
(*) Możesz także użyć polecenia lsof, które służy głównie do pobierania informacji o plikach otwieranych przez różne procesy (sugeruję uruchomienie
netstat
wcześniej).Tak więc w przypadku wyjścia powyżej
PID
is915
. Teraz możesz biegać:Zobacz też identyfikator procesu nadrzędnego (
PPID
) i polecenie wykonania.Możesz także uruchomić:
$ pstree -s <PID>
do wizualnej prezentacji procesu i związanych z nim procesów.W naszym przypadku widzimy, że proces prawdopodobnie jest demonem (PPID to 1) - w takim przypadku rozważ uruchomienie:
A)
$ cat /proc/<PID>/status
w celu uzyskania bardziej szczegółowych informacji o procesie, takich jak liczba wątków utworzonych przez proces, jego możliwości itp. ”.B)
$ systemctl status <PID>
, aby zobaczyć pliksystemdjednostkę, która spowodowała powstanie określonego procesu. Jeśli usługa nie jest krytyczna - możesz ją zatrzymać i wyłączyć .4) Restart Docker serwis
Run:
sudo service docker restart
.5) Osiągnąłeś ten punkt i ...
Tylko jeśli nie stwarza to zagrożenia dla Twojego systemu - rozważ ponowne uruchomienie serwera.
źródło
Zaktualizowałem mojego dockera dziś po południu i napotkałem ten sam problem. Próbowałem ponownie uruchomić dockera, ale bez powodzenia.
W końcu musiałem ponownie uruchomić komputer i zadziałało. Zdecydowanie błąd.
źródło
Sprawdź
docker-compose.yml
, może się zdarzyć, że port został określony dwukrotnie.źródło
Kilka razy napotkałem ten sam problem. Wydaje się, że ponowne uruchomienie dockera załatwia sprawę
źródło
Rozwiązuję ten problem, ponownie uruchamiając Docker.
źródło
a następnie uruchom ponownie komputer
źródło
Odmiana odpowiedzi @ DmitrySandalov: miałem tomcat / java działający na 8080, który musiał działać. Przejrzałem plik docker-compose.yml i zmieniłem wpis dla 8080 na inny, który wybrałem.
Działał doskonale. (Jedyną pomyłką jest to, że zmiana zostanie usunięta, jeśli kiedykolwiek zaktualizuję projekt, ponieważ pochodzi z zewnętrznego repozytorium).
źródło
Na marginesie, jeśli masz ten sam problem i dotyczy systemu Windows:
W moim przypadku proces na mojej drodze jest sprawiedliwy
grafana-server.exe
. Ponieważ najpierw pobrałem wersję binarną i dwukrotnie kliknąłem plik wykonywalny, a teraz uruchamia się jako usługa użytkownika,SYSTEM
której nie mogętaskkill
(brak pozwolenia)Muszę przejść do „Menedżera usług” systemu Windows i wyszukać usługę „Grafana” i ją zatrzymać. Po tym porcie 3000 nie jest już zajęte.
Mam nadzieję, że to pomoże.
źródło
Tym, który korzystał z portu 8888 był Jupiter i musiałem zmienić plik konfiguracyjny notebooka Jupiter, aby działał na innym porcie.
aby wyświetlić listę osób używających tego konkretnego portu. sudo lsof -i -P -n | grep 9
Możesz określić port, na którym Jupyter ma uruchamiać usuwanie komentarzy / edytowanie następującego wiersza w ~ / .jupyter / jupyter_notebook_config.py:
c.NotebookApp.port = 9999
Jeśli nie masz pliku jupyter_notebook_config.py, spróbuj uruchomić notatnik jupyter --generate-config. Zobacz to, aby uzyskać więcej informacji na temat konfiguracji Jupyter.
źródło
Zmiana network_mode: „bridge” na „host” zrobiła to za mnie.
To z
źródło
Przed uruchomieniem na: docker run -d --name oracle -p 1521: 1521 -p 5500: 5500 qa / oracle Właśnie zmieniłem port na docker run -d --name oracle -p 1522: 1522 -p 5500: 5500 qa / wyrocznia
działało dobrze dla mnie!
źródło
Na moim komputerze PID nie był wyświetlany z tego polecenia
netstat -tulpn
dla używanego portu (8080), więc nie mogłem go zabić, zabijanie kontenerów i ponowne uruchamianie komputera nie działały. Więcservice docker restart
polecenie zrestartowało docker dla mnie (ubuntu), a port nie był już używany i jestem szczęśliwym facetem i jadę na lunch.źródło
Otrzymałem poniższy błąd, gdy próbowałem uruchomić nowy conatier - słuchaj tcp 0.0.0.0:8080: bind: address już w użyciu.
Rozwiązanie: netstat -tulnp | grep 8080
[[email protected] (aws_main) ~] # netstat -tulnp | grep 8080 tcp 0 0 0.0.0.0:8080 0.0.0.0:* SŁUCHAJ 12749 / java [[email protected] (aws_main) ~] #
zabić -9 12749
Następnie spróbuj ponownie uruchomić kontener, który powinien działać
źródło
Zrób sztuczkę.
źródło