도커
도커
1. 도커 데스크탑 설치
실행
https://log4day.tistory.com/66
1) 도커 파일 작성
FROM : 컨테이너 런타임 환경 ( 버전을 명시하지 않으면, 최신 버전을 사용한다. 예, FROM node:14 )
WORKDIR : 도커 컨테이너의 워크 스페이스. 스크립트 파일에 명시한 파일이 읽고 쓰여질 경로
RUN : 이미지 빌드 시점에 실행할 CLI 명령어 ( 나의 경우 package.json 파일을 읽어 의존성 패키지를 설치하게 했다. )
EXPOSE : 컨테이너 실행 시 프로세스 포트
CMD : 컨테이너 실행 시 실행 명령어 ( RUN과 실행 시점이 다르다. RUN은 이미지 빌드할 때이다. )
# ============================================================
# Dockerfile 내부 스크립트
# ============================================================
# 실행환경
FROM node
# 도커 컨테이너 Work Directory
# - 명령어 실행 Default 경로 설정
WORKDIR /app
# COPY는 일종의 코드 스냅샷과 같음. Build 명령어로 이미지가 만들어졌다면, 수정이 어려움 ( Image = Read-only )
#
# 2개의 경로
# (1) 이미지화 시킬 파일 경로, 이미지로 만들 때 읽을 파일 경로
# (2) 도커 내부 이미지 저장 경로 ( root 경로는 권장하지 않음 )
# - Work Directory를 따로 지정하지 않으면, 명령어는 해당 경로에서 실행
# - WORKDIR 지정 시, 상대 경로로 사용됨
#
# 빌드 시, Layer 캐싱 활용 (소스코드만 변경될 경우 저장된 캐시 사용)
COPY package.json /app
# 실행 명령어
RUN npm install
# 포트 지정 ( From Isolated System to Local System)
# - 문서로서 기록 ( 어떤 포트에서 동작하면 좋은지 가이드 용도) > 실제 동작은 하지 않음
# - docker run -p 3000:80 [ 이미지 ID ]
# - -p = publish > 로컬 PC와 컨테이너를 연결
EXPOSE 80
# RUN vs CMD
# - RUN : 이미지 생성 시, 실행
# 문자열 형식
# - CMD : 이미지로부터 컨테이너 실행 시, 실행 ( 항상 마지막에 명시 )
# 배열 형식
CMD ["node", "server.js"]
2) 빌드
# 빌드 명령어 ( 워크 스페이스 루트 경로에서 실행 )
docker build .
3) 실행
# 도커 실행
# - 로컬 PC에서 읽을 포트
# - 컨테이너 내부 실행 포트
# - 생성된 이미지 ID ( 빌드 로그 제일 마지막에 sha256 이라는 키워드가 붙여 표기된 값 )
docuer run -p [Local Port]:[Process Port in Container] [ Image ID ]
# 도커 실행 명령어 예제
# - 컨테이너 실행 포트 = 80
# - 로컬 PC에서 읽을 포트 = 3000
# - 도커 이미지 ID = 19d66bf50e2 ( 모든 ID를 입력하지 않고, 앞자리 몇개만 입력해도된다. )
docuer run -p 3000:80 19d66bf50e2
(TBRVT) F:\hankooktire\00_ML\15_SQL_Stremlit\blog-with-code-main\apps\sqlite_streamlit>docker run -p 3000:80 8af4edfd9c4dbb81c9afee9c346ab5b7c598ebfeaf9754c824f5909b30ddc999
4) 실행확인
5) 종료
# 컨테이너 실행 종료
# - ps 명령어에서 확인한 NAME 항목 입력
docker stop vigorous_feynman
댓글
댓글 쓰기