데이터 관리 및 볼륨으로 작업하기 - 요약
컨테이너는 도커의 핵심이며 데이터를 읽고 쓸 수 있다.
컨테이너는 빌드된 이미지 위에 얇은 read-write 레이어를 추가한다. 하지만 이 레이어는 컨테이너가 제거 될 시 같이 소거된다.
하지만 거의 모든 애플리케이션은 유지되어야할 데이터가 있다. 그렇기 때문에 볼륨을 추가해 사용한다.
데이터가 유지된다는 것은 결국 호스트 머신 어딘가에 존재한다는 뜻이다.
볼륨은 도커에 의해 관리되며, 컨테이너에 마운트된다.
이렇게 생성된 볼륨은 컨테이너 속 데이터와 매핑되어 있기 때문에 컨테이너가 내부에 저장한 데이터가 고스란히 볼륨에도 남아 컨테이너 제거 후에도 유지된다.
볼륨은 두 가지가 존재한다. 명명된 볼륨은 컨테이너가 제거되도 유지되기에 영구 데이터에 적합하다.
익명 볼륨은 컨테이너가 제거되면 같이 제거된다. 따라서 임시 데이터를 저장하기에 적합하다.
바인딩 마운트는 명명된 볼륨과 비슷하지만 데이터가 미러링되는 호스트 머신의 경로를 알고 있고 실제로 그 경로를 사용하여 데이터를 컨테이너에 전달하여 호스트 머신에서 그 데이터를 변경할 수 있어 컨테이너에서 항상 최신 데이터를 사용할 수 있다
볼륨은 'docker run' 명령에서 '-v' 옵션으로 생성하며, 볼륨이 존재하지 않을 땐 새로 생성을 존재하면 생성되어 있는 볼륨을 사용한다.
빌드 인수와 런타임 환경 변수를 사용하면, 이미지를 빌드하거나 컨테이너를 실행할 때 외부에서 특정 데이터를 전달할 수 있습니다. Dockerfile이나 소스 코드에서 모든 것을 하드 코딩할 필요없이 대신 컨테이너를 실행할 때 값을 지정할 수 있다.