About Docker

mkhome·2021년 4월 5일
0

docker

목록 보기
1/4

Docker란

도커란 많은 사람들이 아는 것처럼 컨테이너 기반의 가상화 플랫폼이다. 도커 이전엔 가상머신? 이라는 개념으로 서버를 운용했다.(OS를 가상화!) 즉 호스트 OS위에 게스트 OS 전체를 가상화하여 사용했다.
하지만 도커는 쉽게 HOST OS가 있으면 그 위에 여러가지 컨테이너들을 각각 올리게 되는 형태 (격리되어있다고..)

이러한 방법의 장점은 우선 여러개의 컨테이너를 실행하면 서로 영향을 미치지 않고 독립적으로 실행되기에 굉장히 가벼운 느낌을 준다. 실행중인 컨테이너에 접속해 명령어를 입력할 수 도 있고 패키지 설치 등 관리도 굉장히 편하다 (단점도 있겠지만..)

도커 컨테이너를 만들기 위해선 docker image를 사용한다. 이러한 이미지는 docker hub에서 제공하는 공식 image도 있으며 사용자들이 각자 제작한 imgae들도 있다. (현재 회사에서 aws를 쓰고 있으며 찾아보니 aws에서도 image를 제공하고 있다.) 회사에서 쓰고 있는 이미지는 공식이미지위에 필요한 내용들을 쌓아간 뒤 ECR에 저장해 사용중에 있다.

이미지에서 컨테이너 만들기

사실 현재 도커를 사용하고 있지만 굉장히 주먹구구식으로 사용하고 있기에 하는 말들이 모두 맞다고도 틀렸다고도 할 수는 없지만 내가 이해한 내용을 기술하자면 (메인 django 서버를 기준으로)

  1. 로컬상태에서 개발 진행
    • 해당 내용은 각자가 필요한 것들을 로컬에서 제작
  2. aws ec2에 배포하기 위한 준비
    • 우리 같은 경우엔 aws가 제공하고 있는 codepipeline을 사용해서 깃헙 푸쉬부터 배포까지를 한번에 진행하고 있다. codepipeline은 크게 3가지 단계를 거치는데 소스(codeCommit), 빌드(codeBuild), 배포(codeDeploy)로 나눌 수 있다.
      - 소스단계는 codepipeline과 저장소를 연결하고 확인(?)하는 단계로 현재 우리가 사용하고 있는 깃헙에 변경내용이 있을 경우 해당 변경사항을 확인하는 단계라고 생각
      - 빌드는 말그대로 변경된 내용을 토대로 이미지를 변경하는 단계다 새롭게 만드는 것이 아니라 이전의 내용을 쌓아가는 방식인데 생각해보니 현재 회사 docker파일은 계속 새롭게 이미지 만드는 느낌..
    • 빌드 단계에서 EC2에 명령을 내리기 위해 buildspec.yml이라는 파일을 만든다. 해당 파일을 읽어가면서 EC2는 필요한 내용들을 진행해나간다.
      image를 만들때는 dockerfile을 읽어서 진행

0개의 댓글