도커는 소프트웨어를 쉽게 관리하고 배포할 수 있도록 도와주는 플랫폼입니다. 도커를 사용하면 프로그램과 그 프로그램이 필요로 하는 환경을 하나의 단위로 격리시킬 수 있어서, 애플리케이션을 어디서든 동일한 방식으로 실행시킬 수 있고 환경 설정에 대한 걱정을 덜 수 있습니다.
도커 파일은 컨테이너를 어떻게 만들어야하는지에 대한 ‘설명서’입니다.
도커 파일에는 우리 애플리케이션을 구동하기 위해서 꼭 필요한 파일들은 무엇이 있는지, 어떤 프레임워크나 라이브러리를 설치해야 하는지 외부 dependencies에 대해서 명시할 수 있습니다. 또한 필요한 환경변수도 설정할 수 있고 어떻게 구동해야하는지에 대한 스크립트도 포함할 수 있습니다. 이렇게 작성한 도커파일을 이용하여 도커 이미지를 만들 수 있습니다.
도커 이미지는 한마디로 실행 중인 애플리케이션의 상태를 캡쳐하여 만든 '스냅샷'입니다.
이미지는 마치 사용자가 애플리케이션을 배포할 때 필요한 모든 것을 미리 패키징한 것과 유사합니다. 이러한 패키지에는 애플리케이션 코드뿐만 아니라 애플리케이션을 실행하기 위한 모든 설정, 라이브러리, 의존성 등이 포함되어 있습니다.
이 이미지를 바탕으로 도커 컨테이너를 생성하면, 이미지에 포함된 모든 내용과 설정을 그대로 적용하여 애플리케이션이 실행됩니다. 이는 애플리케이션의 배포와 관리를 훨씬 효율적으로 할 수 있도록 도와줍니다.
도커 컨테이너를 통해 캡쳐해둔 애플리케이션의 이미지를 격리된 환경, 즉 개별적인 파일시스템 안에서 실행할 수 있습니다. 이런 컨테이너 안에서 애플리케이션이 동작하게 됩니다.
이미지는 마치 클래스와 같은 역할을 하며, 각각의 도커 컨테이너는 그 클래스의 개별 인스턴스로 비유할 수 있습니다. 이미지는 공통된 설정과 파일을 포함한 클래스로 볼 수 있고, 각각의 컨테이너는 이 이미지를 바탕으로 독립된 인스턴스로서 동작하게 됩니다.
다시 말해, 우리는 도커 이미지를 사용하여, 마치 클래스를 사용하여 인스턴스를 만드는 것과 유사하게 실제로 애플리케이션이 동작하는 각각의 도커 컨테이너를 생성하게 됩니다. 이러한 컨테이너는 서로 독립적인 파일시스템과 환경을 가지며, 한 컨테이너에서의 변화가 다른 컨테이너에 영향을 주지 않도록 격리된 상태에서 동작합니다.