도커를 사용하는 이유?
: 실행 중인 환경에 관계 없이 언제나 동일하게 실행하기 위해서
도커 컨테이너란?
: 소프트웨어의 실행에 필요한 모든 것을 포함하는 것이 컨테이너이고 도커는 컨테이너 기반의 오픈소스 가상화 플랫폼
VM 과 Container의 차이점?
: VM은 서버 하드웨어를 가상화하는 방식이고 컨테이너는 서버 운영 체제를 가상화한다.
기존의 가상화 방식은 주로 OS를 가상화했지만 컨테이너는 호스트 OS위에 게스트 OS 전체를 가상화해서 사용하는 방식이다.
Docker의 Container 기술을 사용하면 OS 레벨은 공유하고 어플리케이션 레벨에서는 각각의 어플리케이션을 격리해서 실행 할 수 있다.
Docker에서 Image는 컨테이너를 정의하는 읽기 전용 템플릿입니다.
(컨테이너 실행에 필요한 파일, 설정 값등을 포함하고 있는 것으로 상태 값을 가지지 않고 변하지 않는다)
=> 따라서 이미지를 사용하면 동일한 컨테이너를 만들 수 있다.
=> 컨테이너 안에서 변경된 내용이 이미지에 영향을 주게 된다면 우리는 항상 동일한 값을 가진 컨테이너를 만들 수 없다.
만약 파일이나 설정을 변경하고 싶다면?
: 기존에 있던 이미지를 실행시키고, 만들어진 컨테이너 안에서 추가하거나 삭제하고 변경된 내용을 새로운 이미지로 만들어내면 됩니다.
즉, 이미지를 변경하고 싶다면 새로운 이미지를 만들어야 한다.
컨테이너는 이미지를 실행한 상태라고 볼 수 있고 추가되거나 변하는 값은 컨테이너에 저장된다.
같은 이미지로 여러 개의 컨테이너를 생성할 수 있고 컨테이너의 상태가 바뀌거나 컨테이너가 삭제되더라도 이미지는 변하지 않고 그대로 남아있다.
참고 1 : https://velog.io/@plate0113/Docker%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80
참고 2 : https://hu-nie.tistory.com/entry/Docker-%EC%99%80-VM%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90
참고 3 : https://velog.io/@kdaeyeop/%EB%8F%84%EC%BB%A4-Docker-%EC%99%80-VM%EC%9D%98-%EC%B0%A8%EC%9D%B4