728x90
반응형
[ 자체 이미지를 기반으로 컨테이너 실행하기]
도커 이미지 빌드와 컨테이너 실행하기
이전 블로그에서 도커파일을 만들고 빌드 후
이미지를 실행해도 로컬호스트에선 보이지 않는다.? 도커파일에서 포트를 노출했음에도..
새 터미널을 켜고 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
반응형
'강의 > Docker & Kubernetes : 실전 가이드' 카테고리의 다른 글
[26] 이미지 레이어 이해하기 (0) | 2025.02.14 |
---|---|
[25] 이미지는 읽기 전용 (0) | 2025.02.14 |
[21, 22] 우리의 목표 : NodeJS 앱 (0) | 2025.02.13 |
[20] 외부(사전 빌드된) 이미지의 사용 & 실행 (0) | 2025.02.11 |
[19] 이미지 & 컨테이너 : 무엇이며, 왜 사용하는가? (0) | 2025.02.11 |
댓글