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

    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
    반응형

    댓글