클라우드 플랫폼_Docker

lin·2022년 8월 4일
0
post-thumbnail

📒 서버 기술의 변화

서버 컴퓨팅 -> 가상화 서버 -> 클라우드 컴퓨팅 -> 클라우드 플랫폼

📒 클라우드 플랫폼이란?

클라우드 서비스를 제공하기 위한 기반 환경
컨테이너 기반이다.

Software Development Life Cycle
설계 - 코딩 - 컴파일 - 단위테스트 - 패키징 - 통합테스트 - 배포 - 운영테스트 - 운영 - 유지보수 ~~
다양한 시점에서 실행되면서 환경 또는 버전 변경 으로 인해 문제점 발생
++ 대안 :: 개발 환경 구성의 자동화 & CI/ CD

🟠 컨테이너

  • 어플리케이션의 개발, 배포, 실행을 위해 소프트웨어를 표준화된 단위로 관리하는 APP 가상화 기술
  • 어플리케이션을 격리시켜 독립적인 실행환경을 제공하는 패키징 체계

아래 이미지는 기존 애플리케이션 구동 방식 ~ 가상화 ~ 컨테이너 기반 구동 방식까지의 변화를 보여준다.

📒 Docker

장점 : 이미지만 있으면 서버는 짧은 시간에 구성 가능하다.
배포 단위를 이미지로 관리한다.
개발 및 테스트 환경 구성에 용이하다.

DockerFile -> Docker Image -> Docker Container

🟠 Dockerfile 구조

FROM :베이스가 될 이미지 이름
WORKDIR : 작업 디렉토리 지정
COPY 이미지에 포함할 파일 복사
ADD 이미지에 파일이나 디렉토리 복사
RUN 이미지 생성시 실행될 명령
ENV 컨테이너 내부 환경 변수 지정

Docker image는 App code, Runtime, System tools, System libraries 로 구성된다.
Docker image를 가지고 build하여 container에 올린다.
Docker image 구성은 DockerFile로 정의한다.

🟠 Docker 제어 명령어

  • docker start : 도커 실행
  • docker build : 이미지 만들기
  • docker images : 이미지 목록 보기
  • docker ps : 실행 컨테이너 목록 보기
  • docker stop : 도커 중지
  • docker run : 이미지,컨테이너 실행
  • docker tags : 이미지 꼬리표 붙이기
  • docker push : 이미지 올리기
  • docker pull : 이미지 받아오기
  • docker rm imagename : 이미지 삭제

📒 docker-compose

여러개의 컨테이너로 구성된 서비스를 구축
실행하는 순서를 자동화하여 관리하는 도구

  1. Dockerfile을 작성(복수개 가능)
  2. docker-compose.yml 작성
  3. docker-compose up 명령으로 정의된 컨테이너 실행

📒 실습

🟠 생성 및 수정

  • 실습용 디렉터리 생성
    # 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 image 만들기
    docker build –t python-streamlit:001

위 사진에서 빌드시 각 Docker layer가 쌓이는 것을 확인할 수 있다.

생성된 image를 확인할 수 있다.

  • Docker 실행
    docker run --name python-streamlit --publish 8501:8501 python-streamlit:001

  • docker image 수정
    ~~ 프로그램 소스 파일 수정 후
  • 컨테이너 종료
    docker stop [컨테이너명]
    docker rm [컨테이너명]
  • 이미지 재빌드
    docker build -t python-streamlit:001 .

재 빌드 후 컨테이너를 실행하면 수정된 소스 파일로 바뀐 화면을 확인할 수 있다.

🟠 Docker compose 실습

  1. docker-compose.yml 생성
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
  1. DockerFile 생성
  2. 컨테이너 생성
    # docker-compose up --build

접속 가능하다!

profile
BE

0개의 댓글