willy4202
willyLog
willy4202
  • 분류 전체보기 (22)
    • 생각정리 (9)
    • studyLog (12)
      • vue3 (4)
      • 알아보자 (5)
      • CS (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 회사생활
  • Setup
  • 라이프사이클훅
  • 프론트엔드 배포
  • vue3
  • 웹호환
  • 수습
  • 8020
  • 우아콘
  • 개발자
  • 컴포지션API
  • 회고
  • VUE
  • 컴포지션
  • 프론트엔드
  • vue composition
  • 우형
  • 중간면담
  • 자바스크립트
  • i18n

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
willy4202

willyLog

studyLog/알아보자

도커가 뭐에요

2022. 11. 23. 10:42

Docker


정의.

  • 도커는 컨테이너 기반의 가상화 플랫폼이다.
  • 컨테이너화된 앱을 빠르게 빌드, 테스트 및 배포할 수 있게 해주는 소프트웨어 플랫폼으로 컨테이너 서비스는 런타임의 통합 관리(시작 , 중지, 확장)를 지원한다.
  • 어플리케이션 개발 및 배포 수명 주기를 단순화, 자동화 및 가속화할 수 있다.

Docker를 사용하면 코드를 더 빨리 전달하고, 애플리케이션 운영을 표준화하고, 코드를 원활하게 이동하고, 리소스 사용률을 높여 비용을 절감할 수 있습니다. Docker를 사용하면 어디서나 안정적으로 실행할 수 있는 단일 객체를 확보하게 됩니다. - AWS


왜 도커를 쓰나요?

보통 개발자가 개인 피시에서 작업을 하고, 개발한 소프트웨어를 운영서버에 올린다. 개발서버와 운영서버는 환경이 다르기에, 개발서버에서 설치한 소프트웨어들을 운영서버에도 설치해줘야 하고, 코드에 문제가 있을 시 다시 배포해줘야 한다. 위 작업들이 실제 개발을 할 때, 생각보다 많은 비용(시간)이 소요될 수가 있다.

또한, 이러한 작업을 사람이 직접 여러 서버에 하다 보면, 실수가 발생하여 서버 간 환경이 조금씩 달라질 수 있다.

이를 snowflake server(눈송이 서버)라고 한다. 눈송이를 보면 다 똑같은 모양처럼 느껴지지만 실제론 다들 조금씩 다르다. 운영하는 입장에서 가장 껄끄러운 게 오래된 서버라고 한다. 조금씩 다른 서버에 무슨 문제가 일어날지 모르기 때문이다.

쉽게 말해서 배포시, “내 컴퓨터에서 동작하는 문제”를 해결할 수 있다.
만약 동작하지 않으면 여러 방면으로 에러가 어디서 발생했는지 생각할 수 있다.

  1. 로컬과 서버의 특정 라이브러리, 패키지, 언어의 version이 다르면 에러가 나거나,
  2. 의존성이 달라서 에러가 날 수 도 있고
  3. 맥에서 작성한 코드가 윈도우에선 동작하지 않을수도 있다.
  4. …

도커는 이런 dev environment disparity(개발 환경 차이)를 해결해준다. 앱 뿐만 아니라, tools, 의존성, 설정, npm , assets 등 앱의 런타임을 위한 모든 것을 이미지로 캡쳐해두고, 이미지를 전달해서 독립적인 실행환경을 만들 수 있다.

쉽게 얘기해서.

어플리케이션, 시스템 툴, 디펜던시를 모두 모아서 컨테이너에 담고, 윈도우, 맥, 리눅스, 데이터센터, 클라우드, 개인 노트북 등 어떤 환경에서도 실행하고 배포할 수 있도록 도와준다. 이것저것 설정할 필요없는 짱 유용한 패키징 툴.

여기서 설명하는 컨테이너는?

컨테이너란 기술은 OS위에 다수의 어플리케이션 자원을 공유하면서 구동되는 환경을 말한다. 화물선은 OS, 화물선 위의 컨테이너 박스를 어플리케이션 컨테이너로 볼 수 있다.

도커 장점

  1. 빠른 속도와 효울성
    1. 하드웨어 에뮬레이션이 없기 때문에 빠르게 실행이 가능.
  2. 높은 이식성
    1. 독자적인 실행환경을 가지고 있다. 이 환경은 파일로 구성되고 이미지 형식으로 공유가 가능. 즉, 원하는 환경을 파일로 만들면 어떤 머신이든 해당 환경을 시뮬레이션 할 수 있음.
  3. 상태를 가지지 않음
    1. 다른 컨테이너에게 영향을 주지 않기 때문에 , 이미지 기반으로 컨테이너를 실행하는 경우 실행 환경을 쉽게 재사용 할 수 있다.

도커 시작하기

building Container를 위해선?

  • Dockerfile
  • image
  • Container

Dockerfile

Docker에서 이미지를 만들기 위한 용도로 작성하는 파일.

  • 어플리케이션에 필요한 파일은 무엇이 있는지
  • 어떤 디펜던시, 라이브러리르 사용하는지
  • 필요한 환경변수를 설정 가능
  • 어떻게 구동해야할지를 설정할 수 있다.

이미지

도커 이미지는 컨테이너 실행에 필요한 파일과 설정값을 포함한 읽기 전용(Read-only) 템플릿이다.

  • 이미지에는 앱 실행에 필요한 코드, 시스템, 툴, 라이브러리 세팅 등이 포함되어 있음.
  • 실행되고 있는 앱의 상태를 캡쳐해서 이미지로 만들어둔 것.
  • immutable 상태를 가진다.

컨테이너

  • 캡쳐해둔 이미지를 개별적인 시스템으로 실행할 수 있고, 이 컨테이너 안에서 어플리케이션이 동작한다.
  • 컨테이너는 이미지를 실행한 상태로 추가되거나 변하는 값은 컨테이너에 저장된다.
  • 도커 이미지의 인스턴스를 의미한다.

정리

Dockefile에 기입해둔 설정을 바탕으로 이미지 파일을 빌드하고, 이미지 파일을 실행해서 컨테이너를 구동시킬 수 있는 것. 각각의 컨테이너는 독립적으로 실행되기에, 로컬 환경에서 만든 이미지를 서버딴에 전달 후 실행하면 별도의 환경 설정 없이도 앱을 실행할 수 있다.


정리

Dockefile에 기입해둔 설정을 바탕으로 이미지 파일을 빌드하고, 이미지 파일을 실행해서 컨테이너를 구동시킬 수 있는 것. 각각의 컨테이너는 독립적으로 실행되기에, 로컬 환경에서 만든 이미지를 서버딴에 전달 후 실행하면 별도의 환경 설정 없이도 앱을 실행할 수 있다.

| -d | detached mode 흔히 말하는 백그라운드 모드 |
| -p | 호스트와 컨테이너의 포트를 연결 (포워딩) |
| -v | 호스트와 컨테이너의 디렉토리를 연결 (마운트) |
| -e | 컨테이너 내에서 사용할 환경변수 설정 |
| –name | 컨테이너 이름 설정 |
| –rm | 프로세스 종료시 컨테이너 자동 제거 |
| -it | -i와 -t를 동시에 사용한 것으로 터미널 입력을 위한 옵션 |
| –link | 컨테이너 연결 [컨테이너명:별칭] |

의문.

도커는 서버 운영 기록을 코드화 한 것, 그래서 실행 시점에 상관 없이 구성 시점을 고정할 수 있다고 함.

서버 운영 기록은 왜 중요하지..? 그냥 log 아닐까? 이건 질문을 정리해봐야겠다.


Dockerize Vue.js App - Vue.js

Docker For Production: Deployment, Advantages & Best Practices

'studyLog > 알아보자' 카테고리의 다른 글

크로스 브라우징이란?  (0) 2022.11.02
구글 클라우드 플랫폼으로 Vue 프로젝트 배포하기 + 300 달러 공짜로 받기  (0) 2022.10.08
Vercel에서 Proxy를 사용해보자.  (2) 2022.10.07
DP(다이나믹 프로그래밍) 그거 어떻게 하는건데?  (0) 2022.09.20
    'studyLog/알아보자' 카테고리의 다른 글
    • 크로스 브라우징이란?
    • 구글 클라우드 플랫폼으로 Vue 프로젝트 배포하기 + 300 달러 공짜로 받기
    • Vercel에서 Proxy를 사용해보자.
    • DP(다이나믹 프로그래밍) 그거 어떻게 하는건데?
    willy4202
    willy4202
    다양한 정보를 공유합니다.

    티스토리툴바