서버 컴퓨팅 -> 가상화 서버 -> 클라우드 컴퓨팅 -> 클라우드 플랫폼
클라우드 서비스를 제공하기 위한 기반 환경
컨테이너 기반이다.
Software Development Life Cycle
설계 - 코딩 - 컴파일 - 단위테스트 - 패키징 - 통합테스트 - 배포 - 운영테스트 - 운영 - 유지보수 ~~
다양한 시점에서 실행되면서 환경 또는 버전 변경 으로 인해 문제점 발생
++ 대안 :: 개발 환경 구성의 자동화 & CI/ CD
아래 이미지는 기존 애플리케이션 구동 방식 ~ 가상화 ~ 컨테이너 기반 구동 방식까지의 변화를 보여준다.
장점 : 이미지만 있으면 서버는 짧은 시간에 구성 가능하다.
배포 단위를 이미지로 관리한다.
개발 및 테스트 환경 구성에 용이하다.
DockerFile -> Docker Image -> Docker Container
FROM :베이스가 될 이미지 이름
WORKDIR : 작업 디렉토리 지정
COPY 이미지에 포함할 파일 복사
ADD 이미지에 파일이나 디렉토리 복사
RUN 이미지 생성시 실행될 명령
ENV 컨테이너 내부 환경 변수 지정
Docker image는 App code, Runtime, System tools, System libraries 로 구성된다.
Docker image를 가지고 build하여 container에 올린다.
Docker image 구성은 DockerFile로 정의한다.
docker start
: 도커 실행docker build
: 이미지 만들기docker images
: 이미지 목록 보기docker ps
: 실행 컨테이너 목록 보기docker stop
: 도커 중지docker run
: 이미지,컨테이너 실행docker tags
: 이미지 꼬리표 붙이기docker push
: 이미지 올리기docker pull
: 이미지 받아오기docker rm imagename
: 이미지 삭제여러개의 컨테이너로 구성된 서비스를 구축
실행하는 순서를 자동화하여 관리하는 도구
실습용 디렉터리 생성
# mkdir c:\docker_lab
# mkdir c:\docker_lab\python-app-v1
프로그램 파일 작성(실행 원하는 프로그램)
Dockerfile 생성
# syntax=docker/dockerfile:1
FROM python:3.9-slim-buster
EXPOSE 8501
WORKDIR /app
RUN pip install streamlit
COPY . .
CMD [ “streamlit", "run", “app.py”]
docker build –t python-streamlit:001
위 사진에서 빌드시 각 Docker layer가 쌓이는 것을 확인할 수 있다.
생성된 image를 확인할 수 있다.
docker run --name python-streamlit --publish 8501:8501 python-streamlit:001
docker stop [컨테이너명]
docker rm [컨테이너명]
docker build -t python-streamlit:001 .
재 빌드 후 컨테이너를 실행하면 수정된 소스 파일로 바뀐 화면을 확인할 수 있다.
version: "3"
services:
# JupyterLab
jupyter:
build: .
command: >-
start.sh jupyter lab
--NotebookApp.token='‘
--NotebookApp.password=''
ports:
- 8888:8888
shm_size: 4G
working_dir: /home/jovyan/work
volumes:
- .:/home/jovyan/work
user: root
environment:
- NB_UID=1000
- NB_GID=1001
- CHOWN_HOME=yes
# docker-compose up --build
접속 가능하다!