어떤 경우에는 컨테이너를 중지하거나 프로세스를 종료하기 전에 문제에 대해보다 심층적 인 디버깅을 수행하는 것이 중요합니다.
아래 체크리스트를 따르십시오.
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) 이 지점에 도달했습니다.
시스템이 위험에 처하지 않는 경우에만 서버를 다시 시작하십시오.
sudo netstat -pna | grep 3000
듣고있는 프로세스를 얻으려면 a 를 실행하십시오 .