가상머신이 편하긴 하지만 OS가 포함된 독립적인 컨테이너 이기때문에 용량이 커지면서 무겁고 느리다.
그래서 게스트 OS를 설치하지않고 서버 운영에만 필요한 프로그램과 라이브러리와 실행파일만 따로 설치하고 게스트 OS자원은 호스트와 공유하여 용량을 줄여 가볍고 빠르게 할수있도록 하는 컨테이너 기반 오픈소스 가상화 플랫폼이다.
도커를 사용하면 OS환경설정,언어,라이브러리,시스템 도구 등 설치된 환경을 그대로 이미지로 빌드할 수있다.
(ex. java, node.js , python 등 다양한 언어와 프레임워크를 사용한 서비스들은 각기 다른 배포 방법을 가지고있는데 도커를 사용하여 패키징시 동일한 배포 프로세스를 갖게된다.)
<차이점>

설치하기 (macOS)
맥에서는 https://docs.docker.com/desktop/install/mac-install/ 에서 Docker.dmg 다운받아서 설치하면된다.



3.이미지를 컨테이너로 생성한뒤 실행(run)
run <옵션> <이미지 이름> <실행할 파일> —name8081컨테이너 이름>



docker run --name [name] -p [호스트포트]:[컨테이너포트] 작성하여 컨테이너를 생성하고 포트를 연결해주면 아래와 같이 docker desk에서 연결된점을 볼수있고, 웹서버에 8081 호스트 입력시 포트가 연결된걸 볼수있다.


docker exec [OPTIONS] container command [arg..]


apt install nano 로 텍스트 편집기를 설치 (안해도됨)
nano index.html 로 들어가면 해당 컨테이너안의 파일을 수정할수 있게 되었다!<수정 후>

→ Docker volume은 컨테이너와 호스트 운영체제 간에 데이터를 공유하거나 저장하기 위한 기능
→ 파일시스템이나 디렉토리를 호스트 시스템의 특정 경로와 연결하여 데이터를 저장하고 관리할 수 있도록 해준다
→ Docker 생명주기와 관계없이 데이터를 영속적으로 저장할수있다.
![**volume mount 와 bind mount**]
volume mount 와 bind mount
docker run -v 호스트경로:컨테이너경로 -v옵션을 사용해서 호스트경로는 시스템에서 경로이고 컨테이너 경로는 내부에서의 경로를 의미하여 컨테이너가 해당 경로에 접근해서 데이터를 읽고 쓸수있다.


볼륨 생성 , 조회
<생성>
docker volume create 볼륨이름

<기본 조회>

docker run -v 볼륨이름:컨테이너 마운트 경로


볼륨이 컨테이너 내에서 마운트되는 경로를 나타낸다