programing

도커 오류 바인딩: 주소가 이미 사용 중입니다.

telecom 2023. 8. 8. 20:02
반응형

도커 오류 바인딩: 주소가 이미 사용 중입니다.

가 행할때실을 할 때.docker-compose upDocker 프로젝트에서 다음 메시지와 함께 실패합니다.

사용자 및 프록시 시작 오류: 수신 대기 tcp 0.0.0:3000: 바인드: 주소가 이미 사용 중입니다.

netstat -pna | grep 3000

다음을 표시합니다.

tcp        0      0 0.0.0.0:3000            0.0.0.0:*               LISTEN      -  

ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠdocker-compose down하지만 도움이 되지 않습니다.

이것은 저에게 도움이 되었습니다.

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의 코멘트.

당신의 경우, 포트를 사용하는 다른 프로세스가 있었고 코멘트에 표시된 것처럼,sudo netstat -pna | grep 3000문제를 해결하는 데 도움이 되었습니다.

다른 경우(나 자신도 여러 번 접했지만)에는 다른 인스턴스에서 실행되는 동일한 컨테이너가 대부분입니다.그런 경우에는docker ps다른 디렉터리에서 동일한 컨테이너를 실행한 후 동일한 컨테이너 이름을 사용하는 다른 위치에서 다시 실행하는 것이 매우 유용했습니다.

어떻게.docker ps도움이 되었습니다.

docker rm -f $(docker ps -aq)는 모든 컨테이너를 제거하는 데 사용하는 짧은 명령입니다.

편집: 방법 추가docker ps나를 도왔습니다.

저도 같은 문제가 있었습니다.호스트에서 Apache2 서비스를 중지하여 이 문제를 해결했습니다.

아래 명령 하나를 사용하여 해당 포트에서 수신 중인 프로세스를 쉽게 종료할 수 있습니다.

kill -9 $(lsof -t -i tcp:<port#>)

ex :

kill -9 $(lsof -t -i tcp:<port#>)

또는 unbuntu의 경우:

sudo kill -9 `sudo lsof -t -i:8000`

lsof: https://man7.org/linux/man-pages/man8/lsof.8.html 에 대한 관리 페이지

-9는 어떤 뎁스도 확인하지 않고 하드킬용입니다.


(관련은 없지만 포트 5000 미스터리인 경우 유용할 수 있음) - 범인 프로세스는 Mac OS monterery 때문입니다.

포트 5000은 일반적으로 로컬 개발 서버를 제공하는 데 사용됩니다.최신 macOS 운영 체제로 업데이트할 때 도커가 이미 사용 중이었기 때문에 도커를 포트 5000에 바인딩할 수 없었습니다. (포트 5000의 라인을 따라 메시지가 이미 사용 중임을 알 수 있습니다.)

ls of -i:5000을 실행하여 포트를 사용하는 프로세스가 네이티브 macOS 애플리케이션인 ControlCenter라는 것을 알게 되었습니다.이러한 상황이 발생하면 응용 프로그램을 무차별적으로(및 제거) 사용하더라도 응용 프로그램이 자동으로 다시 시작됩니다.제 노트북에서 ls of -i:5000은 Control Center가 프로세스 ID 433에서 사용되고 있음을 반환합니다.나는 모든 -p 433을 죽일 수 있지만, macOS는 프로세스를 계속 다시 시작합니다.

이 포트에서 실행 중인 프로세스가 AirPlay 서버인 것으로 확인되었습니다.에서 비활성화할 수 있습니다.

시스템 기본 설정 » AirPlay 수신기 공유 및 선택 취소로 포트 5000을 해제합니다.

저도 같은 문제가 있었어요docker-compose down --rmi allup을 에서) (Docker-up)

업데이트: 주의 - 이렇게 하면 (댓글에서) 가져온 로컬 도커 이미지도 삭제됩니다.

Linux/Unix의 경우:

다음 명령을 사용하여 Linux 유틸리티 단순 검색

netstat -nlp | grep 8888

이 포트에서 실행 중인 처리를 표시한 다음 해당 프로세스의 PID(행에 있는 PID 찾기)를 사용하여 해당 프로세스를 종료합니다.

kill PID

경우에 따라 컨테이너를 중지하거나 프로세스를 종료하기 전에 문제에 대한 자세한 디버깅을 수행하는 것이 중요합니다.

아래 체크리스트를 따르는 것을 고려해 보십시오.

현재 도커 작성 환경 확인
려달을 합니다.docker-compose ps.
다른 컨테이너에서 포트를 사용 중인 경우 다음을 사용하여 포트를 중지합니다.docker-compose stop <service-name-in-compose-file>또는 교체하여 제거합니다.stop와 함께rm.

현재 작업영역 외부에서 실행 중인 컨테이너 확인
려달을 합니다.docker ps호스트에서 실행 중인 모든 컨테이너 목록을 확인합니다.
가 다른 컨테이너에서 인 것을 하면 포트를 할 수 .docker stop <container-id>.
(*) 원산지 범위에 속하지 않기 때문에compose환경 - 먼저 도커 검사를 사용하여 중지하려는 컨테이너에 대한 자세한 정보를 수집하는 것이 좋습니다.

호스트에서 실행 중인 다른 프로세스에서 포트를 사용하는지 확인합니다.
예를 들어 포트가 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

그리고 프로세스의 process ID)를하십시오.PPID및명령을 수행합니다. 및 실행 명령을 사용합니다.
다음을 실행할 수도 있습니다.$ pstree -s <PID>프로세스 및 관련 프로세스를 시각적으로 표시합니다.

, 을 알 수) - 이을 고려하십시오: PPID 다 1. 이 경우 실행을 고려해 보십시오.
$ cat /proc/<PID>/status프로세스에 의해 생성된 스레드 수, 기능 등과 같은 프로세스에 대한 보다 심층적인 정보를 얻기 위해 사용됩니다.
$ systemctl status <PID>특정 프로세스를 생성한 장치를 확인합니다.서비스가 중요하지 않은 경우 서비스를 중지하거나 사용하지 않도록 설정할 수 있습니다.

도커 서비스 다시 시작
실행:sudo service docker restart.

당신은 이 지점에 도달했고,
시스템을 위험에 빠뜨리지 않는 경우에만 - 서버를 다시 시작해 보십시오.

나의 경우에는.

사용자 및 프록시 시작 오류: 수신 대기 tcp 0.0.0:9000: 바인드: 주소가 이미 사용 중입니다.

제가 은 php storm에서 . php php php php php php php php 입니끄는것를다듣기그버그디리서스에톰것은고제가필요한▁and▁listening다▁turn니입▁php것▁that▁off▁debug▁all▁in▁i▁is▁storm▁need그.icon

아마도 호스트 OS에서 이미 웹 서버를 실행하고 있기 때문에 Docker가 시작하려는 웹 서버와 충돌하기 때문일 것입니다.

따라서 다른 것을 시도하기 전에 이 한 줄기를 시도해 보십시오.

sudo service apache2 stop; sudo service nginx stop; sudo nginx -s stop;

제 우분투 컴퓨터에서 아파치를 실행했습니다.이 명령으로 죽였습니다!

sudo /etc/init.d/apache2 stop

새 컨테이너를 출시하려고 할 때 아래 오류가 발생했습니다.

listen tcp 0.0.0.0:8080: bind: address already in use.

포트에서 실행 중인 프로세스를 확인하려면 다음과 같이 하십시오.8080명령 아래 실행:

netstat -tulnp | grep 8080

아래 출력을 받았습니다.

[root@ip-112-x6x-2x-xxx.xxxxx.compute.internal (aws_main) ~]# netstat -tulnp | grep 8080 tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN **12749**/java [root@ip-112-x6x-2x-xxx.xxxxx.compute.internal (aws_main) ~]#

달려.

kill -9 12749

그런 다음 작동해야 하는 컨테이너를 다시 시작해 보십시오.

redis 서버가 서비스로 시작되면 사용자가 redister 서버를 사용할 때 자동으로 다시 시작됩니다.kill -9 <process_id>또는sudo kill -9 `sudo lsof -t -i:<port_number>` 이 경우 다음 명령을 사용하여 redis 서비스를 중지해야 합니다.

sudo service redis-server stop

오늘 오후에 도커를 업그레이드했는데 같은 문제가 발생했습니다.도커를 다시 시작하려고 했지만 실패했습니다.

마침내, 저는 컴퓨터를 다시 시작해야 했고 작동했습니다.확실히 벌레야.

인확을 합니다.docker-compose.yml포트가 두 번 지정된 경우일 수 있습니다.

version: '3'
services:
  registry:
    image: mysql:5.7
        ports:
      - "3306:3306"             <--- remove either this line or next
      - "127.0.0.1:3306:3306"

network_mode: "bridge"를 "host"로 변경한 것이 제게 도움이 되었습니다.

이것은

version: '2.2'
services:
  bind:
    image: sameersbn/bind:latest
    dns: 127.0.0.1
    ports:
      - 172.17.42.1:53:53/udp
      - 172.17.42.1:10000:10000
    volumes:
        - "/srv/docker/bind:/data"
    environment:
      - 'ROOT_PASSWORD=secret'
    network_mode: "host"

저는 같은 문제에 여러 번 부딪혔습니다.도커를 다시 시작하는 것이 효과가 있는 것 같습니다.

@Dmitry Sandalov의 다양한 대답:8080에서 Tomcat/java를 실행해야 했습니다. 계속 진행해야 했습니다.docker-compose.yml 파일을 보고 8080에 대한 항목을 제가 선택한 다른 항목으로 변경했습니다.

nginx:
  build: nginx
  ports:
    #- '8080:80' <-- original entry
    - '8880:80'
    - '8443:443'

완벽하게 작동했습니다. (단 하나의 주름살은 프로젝트를 업데이트하면 변경 사항이 지워진다는 것입니다. 외부 저장소에서 온 것이기 때문입니다.)

먼저 특정 포트에서 실행 중인 서비스를 확인합니다.사용자의 경우 이미 포트 번호 3000을 사용하고 있습니다.

netstat -aof | findstr :3000

이제 특정 포트에서 실행 중인 프로세스를 중지합니다.

lsof -i tcp:3000

여기 또 다른 답이 있습니다. 왜냐하면 그것은 저에게 유일하게 효과가 있었기 때문입니다.

참조: https://stackoverflow.com/a/61888620/2027793

나는 이것을 실행했고 포트 9000에서 3개의 php-fpm 서비스가 실행되고 듣는 것을 계속 보았습니다.

sudo lsof -i -P -n | grep 9000

그 후 모든 서비스를 제거하려고 시도하면 자동으로 다시 시작됩니다.

sudo kill -9 <process_id>
sudo pkill <process_name>

저는 그 짐승을 죽일 수 없기 때문에, 그 짐승과 함께 놀아보고, 그 짐승이 사용하는 포트를 어떻게 바꿀지 알아내야겠다고 결심했습니다. 그래서 저는 위에서 언급한 답을 우연히 발견했습니다.php가 실행 중인 디렉토리를 찾을 수 있습니다.

cd /usr/local/etc/php/<php_version#>/php-fpm.d/

구성 파일 편집

vi www.conf

이 줄을 찾아 포트 번호를 변경

listen = 127.0.0.1:9000

이제 위의 찾기 및 죽이기 작업을 반복한 다음 도커 컨테이너를 다시 시작합니다.

Docker를 다시 시작하여 문제를 해결합니다.

포트 80을 사용하는 다른 서비스를 종료하는 대신 도커 업데이트 포트를 변경하는 것이 더 합리적입니다.

change to port in docker browser

동일한 문제가 있고 Windows(윈도우)에 있는 경우 참고 사항:

나의 경우, 내 방식의 과정은 정당합니다.grafana-server.exe파일을 는 사용자가 하기 때문입니다.SYSTEM는 그것을 할 수 .taskkill 없음 (권한 없음)

Windows의 "서비스 관리자"에 가서 "그라파나" 서비스를 검색하고 중지해야 합니다.그 후 포트 3000은 더 이상 사용되지 않습니다.

도움이 되길 바랍니다.

포트 8888을 사용하던 것이 목성이었고 다른 포트에서 실행하기 위해 목성 노트북의 구성 파일을 변경해야 했습니다.

누가 특정 포트를 사용하고 있는지 나열합니다. -i -P -n의 sudsuls | grep 9.

주피터가 ~/.jupyter/jupyter_notebook_config에서 다음 행을 주석 제거/편집하여 실행할 포트를 지정할 수 있습니다.py:

c.NotebookApp.port = 9999

주피터_notebook_config.py가 없는 경우 주피터 노트북 --generate-config를 실행해 보십시오.주피터 구성에 대한 자세한 내용은 이 항목을 참조하십시오.

docker run -d --name oracle -p 1521:1521 -p 5500:5500 qa/oracle에서 실행되기 전에 포트를 docker run -d --name oracle -p 1522:1522 -p 5500:5500 qa/oracle로 변경했습니다.

그것은 나에게 잘 작동했습니다!

에서 이 " " " " " " " " " " " " " " " " " 에서 가 되지 않았습니다.netstat -tulpn사용 중인 포트(8080)를 위해, 그래서 나는 그것을 죽일 수 없었고, 컨테이너를 죽이고 컴퓨터를 다시 시작할 수 없었습니다. 그래서service docker restart명령어는 나를 위해 도커를 다시 시작했고(계속) 포트는 더 이상 사용하지 않았고 나는 행복한 친구이고 점심 먹으러 갑니다.

아마도 그것은 너무 무례하지만, 나에게 효과가 있습니다. 도커 서비스 자체를 다시 시작합니다.

sudo service docker restart

당신에게도 효과가 있기를 바랍니다!

컨테이너를 다른 포트로 작동시켰습니다. 예를 들면...8082 :-)

저는 이 문제를 접했습니다.저의 간단한 해결책은 시스템에서 mongodb를 제거하는 것입니다.

Ubuntu에서 mongodb를 제거하는 명령:

sudo apt-get purge mongodb mongodb-clients mongodb-server mongodb-dev

sudo apt-get purge mongodb-10gen 

sudo apt-get autoremove

사례를 하나 더 추가하겠습니다. 동일한 오류가 발생했고 지금까지 나열된 솔루션 중 작동하는 것이 하나도 없기 때문입니다.

serv1:
  ...
  networks:
  privnet:
    ipv4_address: 10.10.100.2
  ...

serv2:
  ...
  # no IP assignment, no dependencies
  
networks:
  privnet:
    ipam:
      driver: default
      config:
        - subnet: 10.10.100.0/24

init 순서에 따라 serv2는 serv1이 시작되기 전에 IP 10.10.100.2를 할당받을 수 있으므로 오류를 방지하기 위해 모든 컨테이너에 대해 IP를 수동으로 할당합니다.어쩌면 더 우아한 방법들이 있을지도 모릅니다.

으로써.docker container해결되었습니다.

sudo docker container stop <container-name>

언급URL : https://stackoverflow.com/questions/37971961/docker-error-bind-address-already-in-use

반응형