개요
컨테이너는 여러 개 실행할 수 있다. 호스트 포트와 컨테이너 포트를 연결해주는 것을 포트 포워딩(port forwarding) 이라고 한다. 포트 포워딩을 통해 호스트 머신의 특정 포트로 들어오는 네트워크 트래픽을 컨테이너의 특정 포트로 전달할 수 있다. 이를 통해 외부에서 컨테이너 내에서 실행 중인 서비스에 접근할 수 있게 된다.
이번 글에서는 직접 생성한 httpd 애플리케이션 실행해봅니다.
개념

docker run -p 8000:80 httdpd
docker run -p 8000:80 httpd 명령어는 Docker를 사용하여 httpd 이미지를 기반으로 컨테이너를 실행하는 명령입니다. 이 명령어의 각 부분을 설명하면 다음과 같습니다:
- docker run: 새로운 컨테이너를 생성하고 실행하는 Docker 명령어입니다.
- -p 8000:80: 호스트와 컨테이너 간의 포트를 매핑합니다. 여기서 8000:80은 호스트의 포트 8000을 컨테이너의 포트 80에 연결한다는 의미입니다.
- 8000: 호스트 머신에서 사용할 포트 번호입니다.
- 80: 컨테이너 내부에서 사용할 포트 번호입니다.
- 그럼 포트 매핑을 명시적으로 설정하지 않는다면?
docker run httpd 명령어는 포트 매핑을 지정하지 않기 때문에, 기본적으로 외부에서 접근할 수 있는 포트를 호스트와 연결하지 않습니다. 그러나 컨테이너 내부에서는 Apache HTTP Server가 기본적으로 포트 80에서 실행됩니다.
이 경우 컨테이너 내부에서는 Apache 서버가 실행 중이지만, 외부(호스트 머신)에서는 해당 서버에 접근할 수 없습니다. 외부에서 접근하려면 포트 매핑을 명시적으로 설정해주어야 합니다.
실습
방법1. Docker desktop 사용
- run 클릭

- Optional settings - Host port 8080 설정
이렇게 설정하면 localhost:8080 으로 들어오면 80번 포트로 port fowarding 하겠다는 의미입니다.

방법2. CLI 사용
docker run --name ws3 -p 8081:80 httpd 명령어: 이름 ws3, 8081:80 포트 매핑
-p 옵션 사용. --publish 의 줄임말

docker ps 명령어: 컨테이너 실행 확인

- docker desktop 에서 만든거 http://localhost:8080/index.html 접속하여 동작 확인

- docker desktop 에서 해당 컨테이너 로그 확인 가능

- 커맨드라인에서 만든거 http://localhost:8081/index.html 접속하여 동작 확인
- 새로고침 로그 확인

직접 생성한 httpd 애플리케이션 실행 완료!!
이제 index.html 을 편집해서 나의 웹앱을 만들 수 있어야한다.
출처