강의/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