(onenote필기 붙임)

Docker
01) Docker 란?
애플리케이션을 신속하게 구축, 테스트 및 배포할 수 있는 소프트웨어 플랫폼.
Docker는 소프트웨어를 컨테이너라는 표준화된 유닛으로 패키징하며, 이 컨테이너에는 라이브러리, 시스템 도구, 코드, 런타임 등 소프트웨어를 실행하는 데 필요한 모든 것이 포함되어 있다.
각각 다른 환경(라이브러리, 프레임워크, 버전 등등)에 구애받지 않고 응용프로그램을 더 쉽고 신속하게 배포 및 확장할 수 있도록 설계된 오픈소스 가상화 플랫폼(컨테이너에 소스를 담아 가상머신(VM)에서 실행하는 것)이며 코드가 문제없이 실행될 것임을 확신할 수 있다.
- 리눅스 컨테이너(Linux Container)기술을 기반으로 하는 오픈 소스 서비스
- docker에서의 container란? = 다양한 프로그램, 다양한 운영체제 및 실행환경 등을 컨테이너로 추상화하여 동일한 인터페이스를 제공하여, 배포 및 관리를 단순화 시켜주는 것
02) Docker를 사용해야 하는 이유?
- 코드를 더 빨리 전달할 수 있음.
- 애플리케이션 운영을 표준화하고, 코드를 원활하게 이동하고, 리소스 사용률을 높여 비용을 절감할 수 있음.
- 협업 시 팀원 및 서버와 개발 환경을 동기화하기 쉬움.
ex) 협업 인원들이 사용하는 언어나 프레임워크의 버전이 달라 오류가 나는 경우
- 도커 이미지에 언어나 프레임워크 버전을 모두 미리 정해놓을 수 있고, 그 것을 컨테이너화 시키면 그 컨테이너는 환경에 상관없이 독립적으로 구동되기 때문에 용이함.
- 서버 배포 시, 서버를 늘리거나 새 서버로 옮길 때 새로운 서버에 하나하나 언어와 프레임워크를 설치해야헀음. = 용량 너무 큰 문제 발생 = docker를 사용하면 이미지만을 가져와(=VM웨어) 새로운 서버에 컨테이너를 만들고 쉽게 동일 환경을 구축할 수 있음. (여러 도커 컨테이너를 돌려 여러 서비스 배포도 가능)
- 다른 가상 환경 기술에 비해 가볍고 실행속도가 빠름.
- 기존의 가상화 방식 : 각 가상 환경마다 독립된 os가 존재 = 무겁고 느림. 컴 성능과 환경이 제한됨.
- Docker : 새 os를 생성하지 않고 기존 os를 계승하여 사용함. = 성능이 훨씬 뛰어남. 환경 설정에 대한 걱정이 없음.
(쉽게말해,, = 중복 많아ㅠ용량 너무 커 ㅠ 중복 냅두고 나머지 추가기능만 깔게!)- 겹치는 기능 = 코어 기능 = 커널 (같은 의미임. ex) print)
- docker 안에 node 등 기본 세팅 되어있어서 편리함 (다운받으면 공유해서 바로 쓸 수 있음)



(이미지 패킹하려면 docker 파일을 만들어야 함)


docker-hub : 무료 다운 가능한 도커 허브 이미지들 있음
사용자들이 올린 것으로 git-hub같이 보면 됨.(로그인하면 이미지 검색도 가능)





























