
: 도커는 한 마디로 공통 환경 설정 플랫폼이라고 표현할 수 있다.
도커를 알기에 앞서, '컨테이너'에 대해서 알아야 한다. OS는 생각보다 더 다양하다. Linux, window, mac os 등이 있고 리눅스에서도 엄청 다양한 배포판이 존재한다. 운영체제, 배포판에 따라서 명령어나 기술 정책들이 조금씩 다르다.
-> 따라서 실제 작업한 테스트 환경에서 다른 운영 환경으로 옮길 경우, 여러 오류들을 직면하게 된다.
-> 소프트웨어를 다른 컴퓨팅 환경으로 이동하면서도 안정적으로 실행하는 방법
-> 애플리케이션을 구동하는 환경을 컨테이너 박스에 넣어 하나로 만든 것
-> 가상 머신 기술이 없어도 됨 (가상화 기술 이용해 os위에 os새로 설치)
: 애플리케이션을 신속하게 구축, 테스트 및 배포할 수 있는 소프트웨어 플랫폼
-> 컨테니어들을 쉽게 관리하고 신속하게 배포 및 확장할 수 있게

: 컨테이너를 생성하기 위한 설계도로, 서버가 이 도커 이미지를 보고 컨테이너를 생성하게 되는 것
-> 즉, 서버에서는 도커 이미지를 통해 새로 컨테이너를 생성할 필요없이, 이미 구축된 그 환경을 이용하는 것
즉, 도커는 어떤 소프트웨어를 실행하기 위한 운영 환경을 제공해주는 플랫폼이다. 운영체제에 따라서 기술 정책이나 명령어들, 라이브러리 버전 이런 것들이 맞지 않아 충돌이 생기는 경우를 해결하기 위함이다. 따라서 도커는 그런 통일된 환경에서 작업을 할 수 있도록 해주는 것이다.
도커는 도커파일을 통해 도커이미지를 생성하는데, 그 이미지는 컨테이너 생성을 위한 설계도라고 할 수 있다. 그 이미지는 도커 허브에 저장을 하고, 도커 허브에서 가져와서 컨테이너 (운영 환경)을 구축하는 것이다.
즉!! 도커는 도커이미지 통해서 컨테이너라는 공통 운영 환경을 만드는 플랫폼.
: 백엔드의 로컬과 프론트의 로컬 환경이 달라서 터지는 이슈를 해결하기 위해 백엔드와 프론트엔드에 공통된 환경 구성해줌
(프론트에서는 로컬에 db와 같은 서버 사이드 환경이 구축되어 있는 경우가 많지 않아서, 백엔드 개발자의 구성과 똑같이 맞추는 것이 비효율적)
: 백엔드 배포 환경이 구축되지 않았을 때, 프론트엔드 개발자들이 임의의 서버환경에서 api 테스트할 수 있게 해줌
<도커 혼자 테스트할 때>
자바 파일 바뀌었을 경우: 도커 열고 재생-> 도커 파일(이미지 만들고, 컨테이너 만들어줘~ 이런 명령어) -> 그 파일에서 마우스 우클릭 이후, 터미널에서 열기 클릭-> docker-compose up --build -d 명령어 작성
이미 한 차례 빌드한 경우: 도커 들어가서-> 재생 버튼