반응형
도커(Docker)에서 이미지를 빌드 한 후 컨테이너를 실행할때 포트 설정을 통해 컨테이너와 호스트 간의 네트워크 연결을 구성하는 것은 중요한 과정입니다. 이 포스팅에서는 Docker에서 포트 설정을 하고 실행하는 방법에 대해 자세히 설명하겠습니다.
도커 포트 설정 기본
도커 컨테이너는 격리된 환경에서 실행되기 때문에, 외부와 통신하기 위해서는 포트를 명시적으로 개방해야 합니다. 이를 위해 docker run
명령어를 사용할 때 -p
또는 --publish
옵션을 사용합니다.
명령어 형식
docker run -p [호스트포트]:[컨테이너포트] [이미지 이름]
- 호스트포트: 외부에서 접근할 때 사용할 호스트의 포트입니다.
- 컨테이너포트: 컨테이너 내부에서 사용되는 포트입니다.
- 이미지 이름: 실행할 도커 이미지의 이름입니다.
예시
- 단일 포트 개방 예시
- 예를 들어, 호스트의 5000번 포트를 컨테이너의 80번 포트에 연결하려면 다음과 같이 입력합니다.
docker run -p 5000:80 dockerimage
- 이 경우, 외부에서 호스트의 5000번 포트로 접근하면, 이 요청은 컨테이너의 80번 포트로 전달됩니다.
- 다중 포트 개방 예시
- 여러 포트를 개방하려면
-p
옵션을 여러 번 사용합니다. docker run -p 5000:80 -p 5001:81 dockerimage
- 이 경우, 호스트의 5000번 포트는 컨테이너의 80번 포트로, 5001번 포트는 81번 포트로 매핑됩니다.
- 여러 포트를 개방하려면
어플리케이션 예
// server.js
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hello World from Docker!');
});
const PORT = 3000;
app.listen(PORT, () => {
console.log(`Server running on port ${PORT}`);
});
3000 노드 서버를 실행하는 경우
# 사용할 Node.js 버전을 지정
FROM node:latest
# 애플리케이션 디렉토리 생성
WORKDIR /app
# 애플리케이션 소스 복사
COPY . .
# 애플리케이션 실행
CMD ["node", "server.js"]
노드 서버를 도커 이미즈를 빌드 하는 경우
docker build -t node-docker-app .
docker run -p 80:3000 node-docker-app
위와 같은 명령어로 실행하면 서버에 80포트로 접근하면 도커 이미지의 3000포트로 접속하기 때문에 실행시킨 어플리케이션 서버에 접속이 가능하다.
고려 사항
- 포트 충돌: 이미 사용 중인 호스트 포트에 다른 컨테이너를 연결하려고 하면 충돌이 발생합니다. 이 경우, 다른 포트를 선택해야 합니다.
- 보안: 외부로 개방하는 포트는 보안상의 위험이 있을 수 있으므로, 필요한 포트만 열고, 적절한 보안 조치를 취하는 것이 중요합니다.
결론
도커에서 포트 설정은 컨테이너의 서비스를 외부에 노출시키는 중요한 단계입니다. -p
옵션을 통해 호스트와 컨테이너 간의 포트 매핑을 쉽게 설정할 수 있으며, 이를 통해 외부 네트워크와의 통신이 가능해집니다. 항상 보안을 염두에 두고 필요한 포트만 개방하는 것이 중요합니다.
반응형
'개발관련' 카테고리의 다른 글
next.js + jenkins + harbor + docker 배포 구성하기 (1) | 2024.01.29 |
---|---|
실무에 바로 써먹는 실용적인 도커 사용설명서 (0) | 2024.01.23 |
Windows에서 개발 환경 세팅 하기 WSL 설치 및 사용법 (1) | 2023.10.30 |
의존성 역전 원칙(Dependency Inversion Principle, DIP) (0) | 2023.07.10 |
SOLID 원칙: 객체 지향 설계의 기반을 이루는 원칙들 (0) | 2023.07.10 |