도커와 도커파일

개요
Docker는 소프트웨어 프로젝트를 컨테이너화할 수 있는 플랫폼입니다. 컨테이너화, 소스 코드, 패키지 및 해당 버전의 종속성을 하나의 컨테이너에 포함하고 프로세스로 실행한다는 의미입니다.

Docker와 VM의 차이점은 Docker가 게스트 운영 체제 없이 호스트 커널 OS를 사용하여 컨테이너를 실행한다는 것입니다. 반면 VM에서는 서버 하드웨어가 가상화됩니다. 각 VM에는 자체 게스트 OS가 있습니다. 이로 인해 Docker가 가벼워지고 리소스가 더 적게 소모되며 앱이 더 빠르게 회전합니다.

애플리케이션을 도커화하는 방법은 무엇입니까?

애플리케이션은 먼저 컨테이너에 포함할 청사진 또는 스냅샷을 보유하여 도커화됩니다. 이 청사진을 도커 이미지라고 합니다. 이미지는 Dockerfile에 지정된 다음 이 이미지를 실행하여 이 특정 스냅샷의 컨테이너를 생성합니다.

Dockerfile 만들기

이 파일은 일반적으로 응용 프로그램의 루트 디렉터리에 있습니다. 이 파일의 각 줄은 이미지 빌드 방법에 대한 지침과 계층을 나타냅니다.

노드에서 실행되는 간단한 익스프레스 API를 예로 들어 보겠습니다.

1_ Dockerfile에 상위 이미지 지정

FROM node:17-alpine


이것은 Dockerfile의 첫 번째 계층입니다. 이 노드 이미지를 가져와서 컨테이너에 설치합니다. 콜론 뒤의 태그는 태그라고 하며 끌어야 하는 노드의 버전을 지정합니다.

2_ 컨테이너에서 작업할 디렉토리를 지정합니다.

FROM node:17-alpine
WORKDIR /app


3_ package.json을 복사하고 컨테이너에 모든 종속성을 설치합니다.

FROM node:17-alpine
WORKDIR /app
COPY package.json .  
RUN npm install     


4_ 전체 소스코드를 복사하여 컨테이너에 붙여넣기.

FROM node:17-alpine
WORKDIR /app
COPY package.json .  
RUN npm install   
COPY . . 


사본 옆의 첫 번째 점은 전체 디렉토리를 가져오는 것을 의미합니다. 두 번째 점은 컨테이너에 디렉터리를 붙여넣을 위치입니다./app이 아닌 점인 이유는 WORKDIR /app를 지정한 후 컨테이너의 모든 경로가/app에 상대적이기 때문입니다.

5_ 마지막으로 앱을 실행합니다.

FROM node:17-alpine
WORKDIR /app
COPY package.json .  
RUN npm install   
COPY . . 
CMD ['node' , 'start']



이미지 구축:
Docker build -t [IMAGE_NAME] -p [HOST_PORT]:[EXPOSED_PORT] .
컨테이너 내에서 이미지 실행:
Docker run —name [CONTAINER_NAME] [IMAGE_NAME]
위 명령의 대안은 다음과 같은 통합 작성 파일을 만드는 것입니다.
  • 프로젝트 디렉토리 옆에 docker-compose.yaml을 만듭니다.

  • version: '3.8'
    services: 
      api: 
        build: ./api
        container_name: api_container
        ports: 
          - '3000:3000'
        volumes: 
          - ./api:/app
          - ./app/node_modules
    
    


    달리다 docker-compose up
    볼륨이란 무엇입니까?

    이미지는 읽기 전용이므로 테스트 환경에서 소스 코드를 변경할 때마다 이미지를 빌드하는 것은 의미가 없습니다. 여기서 볼륨을 사용하면 매우 편리해집니다. 볼륨을 사용하면 새 이미지를 빌드하지 않고도 로컬 코드에서 컨테이너의 기존 코드로 파일을 매핑할 수 있습니다.

    몇 가지 유용한 도커 명령

    - Docker ps
        - List all running containers.
    - Docker ps -a
        - List all containers
    - Docker images
        - List all images
    
    - Docker build -t [IMAGE_NAME] -p [HOST_PORT]:[EXPOSED_PORT] .
        - Build the image
    
    - Docker run name [CONTAINER_NAME] [IMAGE_NAME]
            - Run the image inside a container. 
    


    자원:

    Docker docs

    좋은 웹페이지 즐겨찾기