[Docker]4-3 컨테이너의 통신 실습

Gaeng·2024년 11월 25일

컨테이너의 통신

아파치?

  • Apache란 웹 서버 기능을 제공하는 소프트웨어
    아파치가 동작 중인 서버에 파일을 두면 이 파일을 웹 사이트 형태에 볼 수 있다.

컨테이너와 통신하려면

컨테이너는 기본적으로 외부와 직접 통신하지 않으므로, 호스트 컴퓨터의 포트를 통해 컨테이너와 외부를 연결해야 합니다. 예를 들어, 웹 서버(아파치)가 컨테이너 내부에서 실행 중일 때, 외부 사용자가 접속할 수 있도록 포트를 매핑해야 합니다.

개념 설명

  1. 포트 매핑이 필요한 이유

    • 컨테이너 내부에서 실행되는 서비스(예: 아파치 웹 서버)는 외부 네트워크와 직접 연결되지 않습니다.
    • 이를 해결하기 위해 호스트(물리적 컴퓨터)가 외부 요청을 받고, 해당 요청을 컨테이너로 전달합니다.
  2. 포트 매핑 명령어

    • 컨테이너 실행 시 -p 옵션을 사용해 호스트 포트컨테이너 포트를 매핑합니다.
    • 명령어 형식:
      -p <호스트_포트>:<컨테이너_포트>

예시: 아파치 서버 포트 매핑

컨테이너 내부의 80번 포트(아파치)를 외부의 8080번 포트로 연결:

docker run -d -p 8080:80 httpd
  • 8080: 호스트 포트 번호 (외부에서 접근할 때 사용할 포트)
  • 80: 컨테이너 포트 번호 (아파치가 내부적으로 사용하는 포트)

주의사항

  1. 포트 번호 충돌 방지

    • 동일한 호스트 포트를 여러 컨테이너에서 사용하면 충돌이 발생합니다.
    • 각 컨테이너에 대해 호스트 포트를 다르게 지정해야 합니다.

    예시:

    docker run -d -p 8081:80 httpd    # 컨테이너 1
    docker run -d -p 8082:80 httpd    # 컨테이너 2
  2. 포트 설정 없이 실행한 경우

    • 포트를 매핑하지 않으면 컨테이너 내부의 포트는 외부에서 접근할 수 없습니다.
  3. 외부 접근 시 주소

    • 호스트 컴퓨터의 IP 주소 또는 localhost와 함께 호스트 포트 번호를 사용합니다.
    • 예: http://localhost:8080

실습 : 통신이 가능한 컨테이너 생성

생성 및 실행

docker run --name apa000ex2 -d -p 8080:80 httpd

실행

stop 및 remove

profile
문제를 해결하면서 나온 문제를 기록하는 노트

0개의 댓글