Docker
는 데이터와 프로그램을 격리시키는 기능을 제공하는 소프트웨어 입니다. 예를 들어) 개인용 컴퓨터에는 여러 가지 프로그램이 동시에 돌아가지만 도커의 경우 데이터나 프로그램을 독립된 환경에 격리하는 기능을 제공합니다.
해당 기능은 주로 서버에 사용되며 독립된 환경을 Container
라고 하며 이를 다루는 기능을 제공하는 것이 Docker입니다. Docker를 사용하려면 Docker Engine
을 설치해야 합니다.
Docker
는 리눅스 컴퓨터에서 사용되기 때문에 해당 운영체제가 필수적입니다. 외부 OS에서 동작시킬 수 있지만 내부적으로 리눅스가 사용되며, 컨테이너에서 동작 시킬 프로그램도 마찬가지입니다.
참조 : https://stackoverflow.com/questions/49855834/why-docker-has-two-types-docker-engine
Docker Engine
은 Docker 소프트웨어의 본체입니다. Docker를 사용하기 위해 실행시켜야 하며 Container를 생성하고 구동시킬 수 있습니다. 하지만 Container를 생성하려면 부가적으로 Image가 필요합니다.
컨테이너를 생성하기 위해 필요하며 ISO 파일을 사용합니다. 소프트웨어의 종류에 따라 다양한 이미지를 사용합니다. 예를 들면) MySQL 컨테이너를 생성할 경우 MySQL 이미지가 필요하며, 특정 소프트웨어를 설치하려면 그에 맞는 이미지를 사용해야합니다.
대부분의 프로그램은 단독으로 동작하는 것이 아닌 실행 환경, 라이브러리, 동작하기 위한 선행 조건 필요 등이 있습니다. 즉, 프로그램간의 연동이 서로 영향을 미치게 됩니다.
버전 충돌, 경로 설정 충돌 등과 같이 한 서버에서 여러 프로그램이 실행되면서 발생할 수 있는 문제를 대부분 해결할 수 있습니다.
한 대의 서버에서 웹서버를 한개밖에 실행하지 못합니다. 도커 환경에서 컨테이너 기술을 활용하는 경우 여러 개의 웹 서버를 운용할 수 있으며 또한 DB 서버 와 같은 다른 종류 역시 각각 독립적인 환경에서 운용할 수 있습니다. 이는 필요한 물리 서버의 개수를 감소시킬 수 있습니다.
도커 환경에서 컨테이너의 정보를 내보내기 한 다음, 다른 도커 엔진에서 복원하는 형태로 옮길 수 있습니다.
이러한 특성을 활용하여 모두가 동일한 개발환경을 사용할 수 있으며 사용하는 운영체제가 달라도 컨테이너를 옮길 수 있습니다. 즉, 물리적 환경 차이, 운영 서버와 개발 서버의 환경 차이로 인한 문제를 방지할 수 있습니다.
유익한 자료 감사합니다.