방법
이전에는 포트를 넣지 않고 설치 후 실행하였다면, 이번에는 포트를 넣은 후 접속까지 하도록 할 수 있습니다.
docker run -d --name [이름] -p [호스트포트]:[컨테이너 포트] [이미지이름]
예제로 저는 이름은 web-server
호스트포트는 8000
컨테이너 포트는 80
이미지는 nginx 로 설정한다면?
docker run -d --name web-server -p 8000:80 nginx
이렇게 입력 가능합니다.
포트를 입력한 것과 입력하지 않는 것은 아래와 같이 차이점을 확인 가능합니다.
포트포워딩이란?
- 내부 네트워크(사설 IP)에 있는 장치나 서비스에 외부 네트워크(공인 IP)에서 접근할 수 있도록 특정 포트를 열어주는 네트워크 설정 방법입니다.
말이 어려우니 그냥 원격 접속이 가능하게 만든다고 저는 이해하였습니다.
그런데 원격 접속을 위해서는 IP 그리고 포트가 몇 번인지 알아야 접속이 가능합니다.
여러 포트 중 8000번 포트를 열고 그 이후 80번 포트로 들어가도록 만들었습니다.
그래서 웹 에서 localhost:8000 을 입력하면 container 안에 설치한 nginx 로 접속이 가능합니다.
여기서 두 가지 질문이 나올 수 있습니다.
localhost 와 nginx 의 포트를 같게 할 경우??
새로 하나 생성하여 포트가 80번 포트로 나오게 합니다.
이렇게 될 경우 아래의 그림처럼 접속이 됩니다.
이렇게 된 경우 localhost:80 또는 localhost 둘 다 사용하여 웹서버로 접속이 가능합니다.
왜 nginx는 80번 포트로 입력을 하는가?
기본 포트라는 (Default Port) 개념으로 인터넷에서 특정 프로토콜(HTTP, HTTPS 등)은 기본적으로 사용되는 포트번호가 정해져 있습니다.
여기서 웹 브라우저는 HTTP 요청 시 자동으로 포트 80을 사용하기 때문에, 포트번호를 생략해도 자동으로 80번 포트로 연결됩니다.
좀 더 세부적인 것은 컨테이너 내부에 접속해서 확인 가능합니다.
'Docker' 카테고리의 다른 글
[Docker] 실행중에 있는 컨테이너 내부에 접속하기 (0) | 2025.02.20 |
---|---|
[Docker] 도커 생성 시 이름 부여하기 (0) | 2025.02.20 |
[Docker] 도커를 생성과 실행을 함께한다면? (0) | 2025.02.19 |
[Docker] 컨테이너 생성과 조회, 실행 그리고 삭제하기 (0) | 2025.02.18 |
[Docker] 도커 이미지 삭제하기 (0) | 2025.02.18 |