>  기사  >  운영 및 유지보수  >  Linux Docker 포트 매핑에 액세스할 수 없는 경우 수행할 작업

Linux Docker 포트 매핑에 액세스할 수 없는 경우 수행할 작업

PHPz
PHPz원래의
2023-04-25 09:01:193741검색

최근 몇 년간 클라우드 컴퓨팅 분야에서 도커(Docker) 기술이 급속히 발전해 널리 활용되고 있습니다. Docker 컨테이너 기술은 개발자가 애플리케이션을 편리하게 배포하는 데 도움이 될 뿐만 아니라 반복 가능한 배포 환경을 빠르게 구축하는 데도 도움이 됩니다. 그러나 Docker를 사용할 때 Docker 포트 매핑에 액세스할 수 없는 등의 문제가 발생할 수 있습니다. 이 기사에서는 Docker를 사용하는 개발자에게 도움이 되기를 바라며 이러한 상황의 원인과 해결 방법을 소개합니다.

1. Docker 포트 매핑이란

Docker 컨테이너에서는 외부 액세스를 용이하게 하기 위해 컨테이너 내부의 서비스 포트를 호스트에 노출해야 하는 경우가 많습니다. 이때 Docker 포트 매핑 기능을 사용해야 합니다.

Docker 포트 매핑은 컨테이너의 포트를 호스트의 포트에 매핑할 수 있습니다. 예를 들어 컨테이너의 포트 80을 호스트의 포트 8080에 매핑하면 호스트의 포트 8080에 액세스할 때 컨테이너의 포트 80 서비스에 액세스할 수 있습니다.

2. Docker 포트 매핑에 액세스할 수 없는 이유는 무엇인가요?

Docker를 사용할 때 컨테이너 내부의 서비스에 액세스할 수 없는 경우가 종종 있습니다. 이 경우 Docker 포트 매핑이 올바르게 설정되었는지 확인해야 합니다. Docker 포트 매핑이 올바르게 설정되지 않으면 액세스할 수 없게 됩니다.

Docker 포트 매핑에 액세스할 수 없는 일반적인 이유는 다음과 같습니다.

  1. 컨테이너의 서비스가 0.0.0.0 주소를 수신하지 않습니다.

Docker 컨테이너 내에서 개발자는 일반적으로 서비스가 수신하는 주소를 지정하고 기본값은 127.0.0.1이며 이는 로컬에서만 액세스할 수 있음을 의미합니다. 서비스 수신 주소가 변경되지 않으면 호스트에 포트가 매핑되어 있어도 컨테이너 내의 서비스에 접근할 수 없습니다.

  1. 호스트 방화벽이 포트를 차단합니다

호스트의 방화벽이 Docker가 매핑한 포트를 차단하는 경우 호스트에서 Docker 컨테이너 서비스에 액세스할 수 없습니다.

  1. 컨테이너가 실행 중인 포트가 매핑된 포트와 일치하지 않습니다.

Docker 컨테이너에서 실행되는 서비스가 비표준 포트에서 실행될 수 있으며, 이 경우 포트 매핑 중에 매핑해야 합니다. 매핑된 포트가 컨테이너에서 실행 중인 서비스 포트와 일치하지 않으면 서비스에 액세스할 수 없습니다.

  1. Docker 컨테이너가 올바르게 실행되지 않습니다.

Docker 컨테이너가 올바르게 실행되지 않으면 매핑된 포트에 액세스할 수 없습니다. Docker 컨테이너 실행 로그를 확인하여 문제를 해결할 수 있습니다.

3. Docker 포트 매핑에 액세스할 수 없는 문제를 해결하는 방법

Docker 포트 매핑에 액세스할 수 없는 위의 이유에 대해 다음 해결 방법을 취할 수 있습니다.

  1. 0.0.0.0 주소를 사용하여 포트에서 수신 대기합니다

Docker 컨테이너 내부에서 서비스가 포트에서 수신 대기할 때 0.0.0.0 주소를 사용할 수 있습니다. 이는 모든 IP 주소의 요청을 수락할 수 있음을 의미합니다.

예를 들어 Node.js에서 수신 주소를 127.0.0.1에서 0.0.0.0으로 변경하는 코드는 다음과 같습니다.

app.listen(3000, '0.0.0.0', function() {
  console.log('Server listening on port 3000');
});
  1. 호스트 방화벽 구성을 확인하세요

Linux 시스템에서는 포트를 열 수 있습니다. 다음 명령을 통해:

iptables -I INPUT -p tcp --dport 映射的端口号 -j ACCEPT

예를 들어 포트 8080에 대한 액세스를 활성화하는 명령은 다음과 같습니다.

sudo iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
  1. 매핑된 포트의 정확성 문제

먼저 docker ps를 사용할 수 있습니다. 서비스가 실행 중인지 확인하기 위해 컨테이너의 실행 상태를 확인하는 명령입니다. 둘째, 포트 매핑을 수행할 때 포트를 실행하는 서비스가 매핑할 포트인지 확인할 수 있습니다. 예: docker ps命令查看容器的运行状态,确保服务正在运行。其次,可以在进行端口映射时,查看服务运行端口是否为要映射的端口,例如:

docker run -p 8080:80 nginx

在运行这个命令时,需要确保Nginx服务默认运行在80端口。

  1. 检查Docker容器的运行日志

可以使用docker logsrrreee

이 명령을 실행할 때 Nginx 서비스가 기본적으로 포트 80에서 실행되는지 확인해야 합니다.

🎜Docker 컨테이너의 실행 로그 확인🎜🎜🎜dockerlogs 명령을 사용하여 Docker 컨테이너의 실행 프로세스에 대한 로그 정보를 확인하고, 로그 정보를 확인하여 컨테이너 실행 문제를 해결할 수 있습니다. . 🎜🎜위 내용은 액세스할 수 없는 Docker 포트 매핑 문제를 해결하기 위한 몇 가지 방법과 팁입니다. 모든 분들께 도움이 되기를 바랍니다. 🎜

위 내용은 Linux Docker 포트 매핑에 액세스할 수 없는 경우 수행할 작업의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.