Docker가 무엇인가?
Docker를 이해하기 위해서는 Container와 가상화에 대한 이해가 선행되어야합니다
컨테이너는 Host OS 상에서 리소스를 논리적으로 구분하여 마치 별도의 서버인 것 처럼 사용할 수 있게 하는 기술 입니다. 이게 논리적으로 구분한다는게 중요한데 물리적으로 구분하지 않기 때문에 쉽게 없애고 다시 생성하고 할 수 있는 것 입니다. 이런 면에서 가볍다고 표현할 수 있습니다.
가상화와 무슨 차이점이 있는가?
Container
Docker 용어 정리
이미지(Image)를 실행한 상태로, 응용프로그램의 종속성과 함께 응용프로그램 자체를 패키징 or 캡슐화하여 격리된 공간에서 프로세스를 동작시키는 기술이다.
1) 컨테이너는 이미지 Layer에 읽기/쓰기(read-write) Layer를 추가하는 것으로 생성/실행된다. 따라서 여러 개의 컨테이너를 생성해도 최소한의 용량만 사용되며, 바뀐 부분을 읽기/쓰기 Layer에 적는다.
2) 컨테이너는 종료되었다고 해도 메모리에서 삭제되지않고 남아있다. 삭제하려면 명시적으로 삭제해야 함. 즉 종료가 되어도 컨테이너 & 읽기/쓰기 Layer 또한 그대로 존재하기 때문에 다시 시작할 수 있다.
3) 컨테이너를 삭제했다는 것은 컨테이너에서 생성한 파일이 사라진다는 것. 예) DB라면 그동안 쌓였던 데이터가 모두 사라진다는 뜻과 동일.
4) 한 서버는 여러 개의 컨테이너를 가져도 당연히 상관없으며, 컨테이너는 각각 독립적으로 실행된다.
5) 컨테이너는 커널 공간과 호스트OS 자원(시스템 콜)을 공유한다.
Docker의 구조
1. Docker 클라이언트가 Docker 데몬과 통신했다.
2. Docker 데몬이 hello-world이미지를 Docker Hub에서 pull 했다
3. Docker 데몬이 hello-world이미지에 해당하는 컨테이너를 생성했다.
사실 정확하게 이해가 되지 않습니다. 실제로 Docker를 어떻게 사용하는지를 보면, 이해하기 쉬울 것 같아서 방법을 찾아봤습니다.
AWS에 Docker 설치 및 서버구동
hello world로 테스트해보는 Docker
여기서 잠깐! 🖐
AWS 란?
- 아마존닷컴에서 개발한 클라우드 컴퓨팅 플랫폼이다.
- Amazon Web Services는 아마존(Amazon)에서 제공하는 클라우드 서비스로, 네트워킹을 기반으로 가상 컴퓨터와 스토리지, 네트워크 인프라 등 다양한 서비스를 제공하고 있다.
- ex > AWS EC2에 Docker 설치하고 서버 구축 ( DockerHub에서 필요 이미지를 받을 수도 있고, 받은 이미지를 수정할수도, 이미지를 새로 생성할 수도 있음 )
Docker에 vue.js app 올리기
vue.cmd create vue-test
docker build -t vue-app
docker images
docker run -it -p 8080:80 --rm --name vue-app-1 vue-app
docker ps
vue.js 공식 document : docker 사용
참고링크