docker-compose up
Docker 프로젝트에서 실행 하면 다음 메시지와 함께 실패합니다.
Error starting userland proxy: listen tcp 0.0.0.0:3000: bind: address already in use
netstat -pna | grep 3000
이것을 보여줍니다 :
tcp 0 0 0.0.0.0:3000 0.0.0.0:* LISTEN -
나는 이미 시도 docker-compose down
했지만 도움이되지 않습니다.
답변
귀하의 경우에는 포트를 사용하는 다른 프로세스였으며 의견에 표시된대로 sudo netstat -pna | grep 3000
문제 해결에 도움이되었습니다.
다른 경우에는 (내가 여러 번 만났음) 대부분 다른 인스턴스에서 실행되는 동일한 컨테이너입니다. 이 경우 docker ps
다른 디렉토리에서 동일한 컨테이너를 실행 한 다음 동일한 컨테이너 이름이 사용 된 다른 위치에서 다시 실행을 시도했기 때문에 매우 유용했습니다.
docker ps
도움이 된 방법 : docker rm -f $(docker ps -aq)
모든 컨테이너를 제거 하는 데 사용하는 짧은 명령입니다.
편집 :docker ps
나를 어떻게 도왔 는지 추가했습니다 .
답변
이것은 나를 도왔습니다.
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
다음 :
kill -9 <process id>
(macOS) 또는 sudo kill <process id>
(Linux).
출처 : 사용자 Rub21의 코멘트 .
답변
나는 같은 문제가 있었다
docker-compose down --rmi all
(도커를 실행하는 동일한 디렉토리에서)
도움이됩니다.
답변
Linux / Unix의 경우 :
다음 명령을 사용하여 Linux 유틸리티에 대한 간단한 검색
netstat -nlp | grep 8888
이 포트에서 실행중인 처리를 표시 한 다음 해당 프로세스의 PID (행에서 PID 찾기)를 사용하여 해당 프로세스를 종료합니다.
kill PID
답변
나는 같은 문제가 있었다. 호스트에서 Apache2 서비스를 중지하여이 문제를 해결했습니다.
답변
제 경우에는
userland 프록시 시작 오류 : listen tcp 0.0.0.0:9000 : bind : address already in use
그리고 내가 필요한 것은 PHP Storm에서 디버그 듣기를 끄는 것입니다.
답변
어떤 경우에는 컨테이너를 중지하거나 프로세스를 종료하기 전에 문제에 대해보다 심층적 인 디버깅을 수행하는 것이 중요합니다.
아래 체크리스트를 따르십시오.
1) 현재 도커 구성 환경을 확인
하십시오 docker-compose ps
.
포트가 다른 컨테이너에 의해 사용하는 경우, 그것을 중지 docker-compose stop <service-name-in-compose-file>
또는 교체하여 제거 stop
와 함께 rm
.
2) 호스트에서 실행중인 모든 컨테이너 목록을 보려면 현재 작업 영역
실행 외부에서 실행중인 컨테이너를 확인합니다docker ps
.
포트가 다른 컨테이너에서 사용중인 경우를 사용하여 중지 할 수 있습니다 docker stop <container-id>
.
(*) 원본 compose
환경 의 범위에 속하지 않기 때문에 먼저 docker inspect 를 사용 하여 중지하려는 컨테이너에 대한 자세한 정보를 수집하는 것이 좋습니다.
3) 호스트에서 실행중인 다른 프로세스에서 포트를 사용하는지 확인합니다.
예를 들어 포트가 6379이면 다음을 실행합니다.
$ sudo netstat -ltnp | grep ':6379'
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 915/redis-server 12
tcp6 0 0 ::1:6379 :::* LISTEN 915/redis-server 12
(*) 다양한 프로세스에서 열린 파일에 대한 정보를 검색하는 데 주로 사용되는 lsof 명령을 사용할 수도 있습니다 (그 netstat
전에 실행하는 것이 좋습니다 ).
그래서, 상기 출력에서의 경우 PID
이다 915
. 이제 다음을 실행할 수 있습니다.
$ ps j 915
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
1 915 915 915 ? -1 Ssl 123 0:11 /usr/bin/redis-server 127.0.0.1:6379
그리고 상위 프로세스의 ID ( PPID
)와 실행 명령을 확인합니다.
다음 $ pstree -s <PID>
을 실행할 수도 있습니다. 프로세스 및 관련 프로세스를 시각적으로 표시합니다.
우리의 경우 프로세스가 아마도 데몬 (PPID는 1)임을 알 수 있습니다.이 경우 실행을 고려하십시오.
A) $ cat /proc/<PID>/status
프로세스에 의해 생성 된 스레드 수와 같은 프로세스에 대한보다 자세한 정보를 얻으려면 그 기능 등 ‘.
B) $ systemctl status <PID>
보기 위해체계적인특정 프로세스를 생성 한 단위. 서비스가 중요하지 않은 경우 서비스를 중지하고 비활성화 할 수 있습니다 .
4) Docker 서비스 다시 시작
실행 : sudo service docker restart
.
5) 이 지점에 도달했습니다.
시스템이 위험에 처하지 않는 경우에만 서버를 다시 시작하십시오.
