1. 도커 컨테이너 통신 (포트 포워딩)
도커 컨테이너는 가상 네트워크 내부에 존재한다. 외부망(인터넷)에서 접속하려면 컨테이너의 주소를 알아야하는데 컨테이너의 주소는 내부망에 위치하므로 알 수 없다. 외부에서 컨테이너의 주소(내부 IP)를 직접 알 수 없으므로 포트포워딩이 필요하다.
포트포워딩에 대해서는 [네트워크]에서 설명해두었다.
[네트워크] 04. VBox 가상 네트워킹
1. 공인 IP(외부망)와 사설IP(사설망 또는 내부망)[용어 정리]외부망(Internet, Public Network): 전 세계적으로 라우팅되는 공용 네트워크, 공인 IP 대역을 사용한다.내부망(Internal Network, LAN): 공유기 뒤편
sophon.tistory.com

이런 식으로 외부망의 8080 포트를 내부망의 80포트로 매핑하는 포트포워딩을 해줘야 인터넷에서 도커 컨테이너로 접근이 가능하다.
[포트포워딩 매핑 명령어]
// 포트 매핑
-p {호스트포트}:{컨테이너포트}
// 예시: 아파치 웹서버(httpd) 이미지를 사용해 'test1'이라는 이름의 컨테이너를 생성하고 실행
docker run --name test1 -d 8080:80 httpd
- 호스트 포트: 내 PC에서 사용할 포트 번호
- 컨테이너 포트: 컨테이너 내부에서 서비스가 열어둔 포트 번호
즉, 내 PC의 8080번 포트로 접속하면, 컨테이너의 80번 포트로 연결시켜 달라는는 뜻이다.
2. 실습
1. 아파치 웹서버(httpd)를 포트포워딩 없이 'test1' 이름으로 컨테이너를 생성해 실행한다.

2.아파치 웹서버(httpd)를 8080:80으로 포트포워딩을 지정하 'test2' 이름으로 컨테이너를 생성해 실행한다.

3. `docker ps -a` 또는 `docker container ls -a`를 통해 현재 컨테이너 상태를 확인해본다.

test2는 8080 → 80으로 포트포워딩이 된 것을 볼 수 있지만, test1은 포트 매핑을 하지 않았기 때문에 80포트로 열려있기만 한 것을 알 수 있다.
즉 이 상태에선 외부망에서 test1로 연결은 불가능하고, 외부망에서 8080 포트를 통해 test2로는 연결이 가능한 상태이다.

`http:localhost:8080`으로 접속해보면 80포트로 포워딩돼서 test2 컨테이너에 잘 연결되는 것을 확인할 수 있다.
'프로젝트 > Docker' 카테고리의 다른 글
| [Docker] Dockerfile 작성하기 (0) | 2026.02.05 |
|---|---|
| [Docker] 도커 컨테이너 구조, 도커 명령어 (0) | 2026.02.03 |
| [Docker] 도커는 무엇인가? (0) | 2026.01.30 |