강의/Docker & Kubernetes : 실전 가이드

[23] 자체 이미지를 기반으로 컨테이너 실행하기

JJIMJJIM 2025. 2. 14. 22:16
728x90
반응형
SMALL

 

[ 자체 이미지를 기반으로 컨테이너 실행하기] 

도커 이미지 빌드와 컨테이너 실행하기

 

이전 블로그에서 도커파일을 만들고 빌드 후

이미지를 실행해도 로컬호스트에선 보이지 않는다.? 도커파일에서 포트를 노출했음에도..
새 터미널을 켜고 docker ps 현재 실행중인 프로세스만 표시된다

그럼 포트 80에서 수신대기할 수 없는 이유는 무엇일까?
한단계가 빠져있기 때문이다
도커파일에 EXPOSE 80 명령어가 있지만, 실제론 이 명령은 문서 목적으로만 추가되었을 뿐?
즉, 아무것도 안한다는것
문서를 추가하는것은 모범적인 사례이고, 분명 추가하여 컨테이너 포트를 노출시켜야 합니다만,
그 외에 추가해야할 것이 있다.

 

이미지 빌드

docker build .
  • . => 현재 디렉토리의 Dockerfile 사용
  • 빌드 완료 시 이미지 ID 생성
  • 실행하는 곳과 동일한 폴더에 도커파일이 존재함을 알림

 

컨테이너 실행

# 기본 실행
docker run [이미지ID]

# 포트 매핑으로 실행
docker run -p 3000:80 [이미지ID]
  • -p: 포트 매핑 (publish)
  • 3000:80: 로컬의 3000포트를 컨테이너의 80포트에 연결
  • -p 앱에서 엑세스하려는 로컬포트 (3000) : 내부 도커 컨테이너 노출 포트 (80)

 

포트 매핑 이해하기

EXPOSE 명령어의 역할

  • Dockerfile의 EXPOSE 80은 문서화 목적
  • 실제 포트 매핑은 -p 옵션으로 수행
  • 좋은 관행이므로 포함 권장

포트 매핑이 필요한 이유

  • 컨테이너는 격리된 환경
  • 로컬 시스템과 컨테이너 간 통신 필요
  • -p 옵션으로 연결 설정

 

컨테이너 관리 명령어

실행 중인 컨테이너 확인

docker ps

 

모든 컨테이너 확인 (중지된 것 포함)

docker ps -a

 

컨테이너 중지

docker stop [컨테이너ID/이름]

 

 

정리

작업 순서

  • Dockerfile 작성
  • 이미지 빌드
  • 포트 매핑으로 컨테이너 실행

주요 포인트

  • 이미지는 재사용 가능한 템플릿
  • 컨테이너는 실행 중인 인스턴스
  • 포트 매핑은 필수 설정

장점

  • 일관된 환경 제공
  • 쉬운 배포와 관리
  • 격리된 실행 환경

 

이렇게 설정하면 로컬 환경에서 도커 컨테이너의 애플리케이션에 접근할 수 있습니다.

 

 

 

참고

https://www.udemy.com/course/docker-kubernetes-2022

 

728x90
반응형
LIST