이미지는 읽기/쓰기 엑세스 권한이 있는 인스턴스를 실행하는 컨테이너의 "블루프린트"이다.
이미지를 통해 컨테이너가 서로 독립적으로 존재함과 동시에 동일한 이미지를 기반으로 할 수 있다.
컨테이너는 이미지를 기반으로 하는 격리된 소프트웨어 유닛이다. 이미지의 실행중인 인스턴스이다.
도커 실습 코드
# 자체 명령어 자체 이미지를 빌드할 때 실행할 명령어
# 이미지 설정을 위한 도커의 명령
# 이미지를 기반으로 컨테이너 실행
FROM node
# 모든 수행을 app 파일 안에서 진행하라는 의미
WORKDIR /app
# 첫번째 . 모든 파일 의미, 두번째 .는 그 파일을 저장해야하는 이미지 내부의 경로
# Host file system image/ container file system
# app에 저장됨 만약 없다면 이미지와 컨터이너에 생성됨
# COPY . ./ 이러면 현재 위치 카피
COPY . ./
# npm 설치 진행
RUN npm install
# 로컬시스템에 특정 포트로 노출시키고 싶다면 익스포즈
EXPOSE 80
# RUN과의 차이는 이미지가 생성될 때 실행되지 않고 이미지를 기반으로 컨테이너가 실행될 때 실행함
CMD [ "node", "server.js" ]
셀
# 도커 빌드 하기
docker build .
# 주어진 ID 로 로컬 호스트 가동
# -p란 퍼블릭을 의미하며 해당 명령입력시 공개된다.
docker run -p 3000:80 [이미지 ID]
# 종료하는 방법은 ps 를 통해 이름을 찾고 stop 명령으로 종료한다.
# 이름 찾기
docker ps
# 종료
docker stop [이미지 name]
js 파일에서 html을 수정하였다면 도커에서는 처음부터 다시 이미지를 빌드해야 한다.
이때 캐시를 사용하여 처음 보다는 더 빨리 빌드 할 수 있다.
변경된 부분이 없다면 캐시를 사용하는데 만약 변경된 부분이 있다면 다시 설치 또는 복사를 진행한다.
우리가 변화시킨선 js 파일이지 npm 이 아니다.
npm install은 한번만 실행시키기 위해 순서를 COPY . /app 보다 위에 위치 시켰고, package.json 파일도 app에 미리 복사 시켜두었다.
FROM node
# 모든 수행을 app 파일 안에서 진행하라는 의미
WORKDIR /app
COPY package.json /app
# 소스코드가 복사되기 전에 npm 인스톨 레이어가 옴
# npm 여러번 install 하지 않음
RUN npm install
COPY . /app
EXPOSE 80
CMD [ "node", "server.js" ]
'DevOps > 도커' 카테고리의 다른 글
[도커] 이미지 & 컨테이너 삭제 (0) | 2022.08.12 |
---|---|
[도커] 파이썬과 인터렉티브 (0) | 2022.08.12 |
[도커] Attached 모드 & Detached 모드 (0) | 2022.08.12 |
[도커] 도커 첫 발걸음 (0) | 2022.08.12 |
[도커] 도커와 컨테이너 (0) | 2022.07.25 |