Docker - 1. 시작하기

코지클래식·2022년 8월 5일
0

이 글은 Docker 입문 강의의 내용을 요약/정리한 것입니다.

들어가면서

너무 많은 글에서 나와 있어 생략하고싶지만.. 보통 많은 글에서 가상환경과 도커를 비교하는 내용이 많이 나와 있습니다. 그러나 사실 "도커"를 사용해야 하는 이유는 잘못된 표현입니다. "컨테이너"를 사용해야하는 이유입니다. 도커는 컨테이너를 관리하기 위한 도구일 뿐입니다.

가상환경 VS 컨테이너

  • 공통점 : 환경을 분리 할 수 있음, 설정 가능
  • 가상환경의 단점
    1. 가상환경/OS를 느리게하고, 용량 많이 차지함
    1. 공유/재생산/배포가 느림
    2. 앱이나 디펜던시만 컨테이너화 하는 것이 아닌, "머신 전체"를 캡슐화 함.

도커란?

  1. OS가 내장하거나, 에뮬레이트 할 수 있는 "컨테이너"가 작동하도록 지원
  2. 도커엔진을 기반으로 "컨테이너"가 동작
  3. "컨테이너"에는 코드, 라이브러리, 디펜던시(필요한 설치파일)을 포함시킬 수 있음
  4. 운영체제의 layer가 있지만, OS/도커엔진을 공유하기 때문에, 여러 작업환경을 관리할 때, 가상머신에 설치하는 것보다는 훨씬 가볍게 됨.

도커를 사용하는 장점

  1. 컨테이너의 청사진인 "이미지"를 만들 수 있음.
  2. 이 이미지는 타인과 쉽게 공유 가능함
  3. 즉 공유, 재생산, 배포가 쉽다.

도커 설정

도커 설치

  1. windows/macOS 라면 docker desktop을 설치하자.
  2. 리눅스라면 docker engine을 설치하자.
  3. 운영체제가 너무 오래됬으면 Docker Toolbox 라는 것을 사용해야 함

도커 허브

  1. "이미지"를 공유할 수 있는, Github 같은 온라인 repo 관리 사이트
  2. 다운로드 (pull)은 대체로 아무나 받을 수 있지만, 업로드(push)는 계정의 주인만 가능함

도커 맛보기

1. 로컬환경에서 실행할 때

아래와 같은 fastAPI 파일을 실행시킨다고 가정해보자.

.app/main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}

이를 위해 해야하는 작업은?

  1. brew install python(python 설치)
  2. pip install "fastapi[all]"(fast API 설치)
  3. uvicorn main:app --reload

http://localhost:8000 에 들어가서 화면을 확인해보자.

-> 결과 : 서버는 돌아간다. 하지만, 버전관리해야하는 1)파이썬, 2)fastapi, 3) 기타 여러개.. 의 디펜던시 "로컬 머신"에 발생한다. 이 친구들은 작업마다 따로 관리해줘야 할 필요가 있다.

2. 도커에서 실행할 때

./Dockerfile

FROM tiangolo/uvicorn-gunicorn-fastapi

COPY ./app /app

필요한 명령어
1. Dockerfile 작성
2. docker build -t my_image . (이미지 빌드)
3. docker run -p 80:80 my_image (컨테이너 실행)

로컬에서 한 작업보다 물론 간단하지는 않지만,
로컬머신에서 여러 디펜던시를 관리해줘야할 필요가 없다는 점이 매우 매력적이고
그렇게 난이도가 어렵지도 않다.

이제 http://localhost:80 로 접속해서 Hello World! 화면을 확인해보자.

profile
코지베어

0개의 댓글