iptables - 호스트의 포트를 Docker 컨테이너의 포트에 매핑합니다.

iptables - 호스트의 포트를 Docker 컨테이너의 포트에 매핑합니다.

저는 AWS Elastic Beanstalk 내에서 CentOS의 파생물이라고 생각되는 Amazon의 "Amazon Linux"를 실행하는 Docker 컨테이너를 실행하고 있습니다.

내 개발 환경에서는 내 로컬 컴퓨터에서 원격으로 디버깅할 수 있도록 내 응용 프로그램에서 디버깅을 활성화하고 싶습니다. 물론 여기에는 추가 포트가 필요하지만 AWS는 기본적으로 Docker 컨테이너에서 호스트로 하나의 포트만 매핑합니다.

저는 컴퓨터에 있고 Docker 컨테이너에 로컬 주소(172.xxx)가 있는 것을 볼 수 있으며 호스트에 있을 때 해당 주소의 디버그 포트에 접속할 수 있습니다. 문제는 물론 이 주소가 내 로컬 컴퓨터에서 접근할 수 없다는 것입니다.

원격 디버깅을 위해 연결할 수 있도록 <my-aws-host-ip>:<port>호출 을 전달하는 포트 전달 규칙을 수동으로 만들고 싶습니다 . <docker-local-ip>:<port>나는 iptables가 올바른 도구라고 생각하지만 그 사용법에 익숙하지 않습니다. 이 목표를 어떻게 달성할 수 있나요?

답변1

구성 없이 Dockerfile을 만듭니다. 예를 들면 다음과 같습니다.

//Dockerfile

FROM somePkg:1.2.3
EXPOSE 1337 8080 8081

PrivateIP를 통해서는 액세스할 수 없고 PublicIP로만 액세스할 수 있다는 점을 명심하세요. 이에 대해 좀 더 관심을 가질 필요가 있습니다. AWS의 ElasticBeanstalk는 iptables귀하에게 유리한 몇 가지 규칙을 구축했습니다. 이 파일을 사용하지 않는 경우 v2docker 컨테이너가 포트를 매핑하도록 해야 합니다 Dockerrun.aws.json.

또한 AWS의 ElasticBeanstalk는 목록의 첫 번째 포트를 포트 80으로 자동 전달한다는 점을 명심하세요.

따라서 이 경우에는external_interface:80 -> docker_container:1337

관련 정보