Quando executo docker-compose up
no meu projeto Docker, ele falha com a seguinte mensagem:
Error starting userland proxy: listen tcp 0.0.0.0:3000: bind: address already in use
netstat -pna | grep 3000
mostra isso:
tcp 0 0 0.0.0.0:3000 0.0.0.0:* LISTEN -
Já tentei docker-compose down
, mas não adiantou.
ubuntu
docker
ubuntu-14.04
bind
docker-compose
Ngoral
fonte
fonte
sudo netstat -pna | grep 3000
para obter o processo que está ouvindo.sudo
ver o nome do processo.sudo
posso mudar a saída :)Respostas:
No seu caso foi algum outro processo que estava utilizando a porta e conforme indicado nos comentários,
sudo netstat -pna | grep 3000
te ajudou a resolver o problema.Enquanto em outros casos (eu mesmo já o encontrei muitas vezes), é principalmente o mesmo contêiner em execução em alguma outra instância. Nesse caso,
docker ps
foi muito útil, pois muitas vezes deixei os mesmos containers rodando em outros diretórios e depois tentei rodar novamente em outros lugares, onde os mesmos nomes de container foram usados.Como
docker ps
me ajudou:docker rm -f $(docker ps -aq)
é um comando curto que uso para remover todos os containers.Edit: Adicionado como
docker ps
me ajudou.fonte
docker-compose down
ajudadocker-compose up
. Embora eu recomende em minha resposta encontrar o contêiner que já está em execução e realizar a ação desejada. Achei apropriado removê-los, se alguém não quiser remover, então existe orm
usostop
para pará-los.tensorflow/tensorflow
imagem será executada. Como posso configurar minha imagem para rodar em outra porta. Já tentei isso:docker run -it -d -p 8888:8000 tensorflow/tensorflow
vinculei a porta 8888 da minha imagem à 8000 no cliente, mas não funcionou.-d
opção. Agora, as portas estão expostas comoHOST:CONTAINER
. Portanto, você deve correrdocker run -it -p 8000:8888
Isso me ajudou:
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
e então:
kill -9 <process id>
(macOS) ousudo kill <process id>
(Linux).Fonte: comentário do usuário Rub21 .
fonte
docker rm -fv $(docker ps -aq)
esta linha era tudo que eu precisava. ObrigadoEu tive o mesmo problema,
docker-compose down --rmi all
(no mesmo diretório onde você executa docker-compose up) ajudaUPD: CUIDADO - isso também excluirá as imagens da janela de encaixe locais que você puxou (do comentário )
fonte
down
é a última coisa que você geralmente quer fazer. Perder o estado atual não é um pedaço de açúcar.Para Linux / Unix:
Pesquisa simples para o utilitário Linux usando o seguinte comando
Ele mostrará o processamento em execução nesta porta e, em seguida, elimine esse processo usando o PID (procure um PID na linha) desse processo.
fonte
Eu tive o mesmo problema. Corrigi isso interrompendo o serviço Apache2 em meu host.
fonte
Em alguns casos, é fundamental realizar uma depuração mais aprofundada do problema antes de interromper um contêiner ou encerrar um processo.
Considere seguir a lista de verificação abaixo:
1) Verifique seu ambiente docker compose atual
Executar
docker-compose ps
.Se a porta estiver em uso por outro contêiner, pare-a
docker-compose stop <service-name-in-compose-file>
ou remova-a substituindostop
porrm
.2) Verifique os contêineres em execução fora de seu espaço de trabalho atual
Executar
docker ps
para ver uma lista de todos os contêineres em execução em seu host.Se você descobrir que a porta está sendo usada por outro contêiner, pode pará-la com
docker stop <container-id>
.(*) Porque você não está no escopo do
compose
ambiente de origem - é uma boa prática primeiro usar docker inspect para reunir mais informações sobre o contêiner que você está prestes a parar.3) Verifique se a porta é usada por outros processos em execução no host.
Por exemplo, se a porta é 6379 executada:
(*) Você também pode usar o comando lsof, que é usado principalmente para recuperar informações sobre arquivos que são abertos por vários processos (sugiro que seja executado
netstat
antes disso).Portanto, no caso da saída acima, o
PID
é915
. Agora você pode executar:E veja o ID do processo pai (
PPID
) e o comando de execução.Você também pode executar:
$ pstree -s <PID>
para uma exibição visual do processo e seus processos relacionados.Em nosso caso, podemos ver que o processo provavelmente é um daemon (PPID é 1) - Nesse caso, considere executar:
A)
$ cat /proc/<PID>/status
para obter informações mais detalhadas sobre o processo, como o número de threads gerados pelo processo, suas capacidades, etc '.B)
$ systemctl status <PID>
para ver osystemdunidade que ocasionou a criação de um processo específico. Se o serviço não for crítico - você pode parar e desabilitar o serviço .4) Reinicie o serviço Docker
Executar:
sudo service docker restart
.5) Você alcançou este ponto e ...
Somente se não estiver colocando seu sistema em risco - considere reiniciar o servidor.
fonte
No meu caso foi
E tudo que eu preciso é desligar a escuta de depuração na tempestade de php
fonte
Eu estava recebendo o erro abaixo quando estava tentando iniciar um novo conatier- listen tcp 0.0.0.0:8080: bind: address already in use.
Solução: netstat -tulnp | grep 8080
[[email protected] (aws_main) ~] # netstat -tulnp | grep 8080 tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 12749 / java [[email protected] (aws_main) ~] #
matar -9 12749
Em seguida, tente reiniciar o contêiner, ele deve funcionar
fonte
Eu atualizei meu docker esta tarde e tive o mesmo problema. Tentei reiniciar o docker, mas não tive sorte.
Finalmente, tive que reiniciar meu computador e funcionou. Definitivamente um bug.
fonte
Verifique
docker-compose.yml
, pode ser o caso de a porta ser especificada duas vezes.fonte
Corri para o mesmo problema várias vezes. Reiniciar o docker parece funcionar
fonte
Eu resolvo o problema reiniciando o Docker.
fonte
e então reinicie seu computador
fonte
Uma variação da resposta de @DmitrySandalov: eu tinha tomcat / java rodando no 8080, que precisava continuar. Olhei o arquivo docker-compose.yml e alterei a entrada de 8080 para outra de minha escolha.
Funcionou perfeitamente. (O único problema é que a alteração será apagada se eu atualizar o projeto, já que ele vem de um repositório externo.)
fonte
Apenas uma observação se você tiver o mesmo problema e estiver com o Windows:
No meu caso, o processo do meu jeito é justo
grafana-server.exe
. Porque eu primeiro baixei a versão binária e cliquei duas vezes no executável, e agora ele começa como um serviço do usuárioSYSTEM
que eu não possotaskkill
(sem permissão)Tenho que ir ao "Service manager" do Windows e procurar o serviço "Grafana", e pará-lo. Depois disso, a porta 3000 não está mais ocupada.
Espero que ajude.
fonte
O que estava usando a porta 8888 era o Jupiter e tive que mudar o arquivo de configuração do notebook Jupiter para rodar em outra porta.
para listar quem está usando essa porta específica. sudo lsof -i -P -n | grep 9
Você pode especificar a porta que deseja que o Jupyter execute descomentando / editando a seguinte linha em ~ / .jupyter / jupyter_notebook_config.py:
c.NotebookApp.port = 9999
Caso você não tenha um jupyter_notebook_config.py tente executar o jupyter notebook --generate-config. Veja isto para mais detalhes sobre a configuração do Jupyter.
fonte
Mudar network_mode: "bridge" para "host" fez isso por mim.
Isso com
fonte
Antes de ser executado em: docker run -d --name oracle -p 1521: 1521 -p 5500: 5500 qa / oracle Acabei de alterar a porta para docker run -d --name oracle -p 1522: 1522 -p 5500: 5500 qa / oracle
Funcionou bem para mim !
fonte
Na minha máquina, um PID não estava sendo mostrado a partir deste comando
netstat -tulpn
para a porta em uso (8080), então eu não pude eliminá-lo, matar os contêineres e reiniciar o computador não funcionou. Então oservice docker restart
comando reiniciou o docker para mim (ubuntu) e a porta não estava mais em uso e eu sou um cara feliz e vou almoçar.fonte
Faz o truque.
fonte
talvez seja muito rude, mas funciona para mim. reinicie o próprio serviço docker
espero que funcione para você também!
fonte