[Docker] 도커와 CI환경 정리(1)

1 minute read

도커 이미지와 도커 컨테이너 정의

도커는 리눅스의 응용 프로그램들을 프로세스 격리 기술들을 사용해 컨테이너로 실행하고 관리하는 오픈 소스 프로젝트이다.

  • 도커의 컨테이너 기술은 리눅스 운영체제의 기술이다.
  • 컨테이너안에서 동작하는 각각의 앱들은 리눅스 운영체제에서 동작하는 앱들이다.
  • 리눅스 운영체제가 아니어도 도커를 사용할 수 있다.
    가상머신을 깔고 리눅스를 설치하고 사용하면된다.(도커가 해줌)
    리눅스가 아닌 window, macOS는 속도가 어느정도 저하될 수 있다.
    그럼에도 도커를 쓰는 이유는 장점이 어마어마하기 때문이다.

    도커를 쓰는 이유

  • 서버를 관리하는 일은 매우 복잡하고 어려운 작업이다.
  • 만약 서버를 개발할 때 개발 환경이 바뀌게 된다면 컴퓨터 세팅이나 프로그램 등을 처음부터 다시 설정해야한다.
  • 특히 DevOps나 MSA가 유행하면서 마이크로서비스들이 잘게 나뉘어 관리가 더욱 복잡해지고, 클라우드의 발전으로 설치해야 할 서버가 매우 많아지는 상황에서 서버 관리 방식의 새로운 방법이 필요해졌다.
  • 다양한 프로그램들과 실행환경을 컨테이너로 규격화시켜 프로그램의 배포 및 관리를 단순화할 수 있다.
  • 프로그램의 코드뿐만 아니라 실행에 필요한 모든 dependency들도 컨테이너에 담기 때문에 다른 환경에서도 빠르게 애플리케이션을 실행할 수 있다.

    도커를 쓸 때의 장점

  • Application의 개발과 배포가 편해진다.
    • 독립된 개발 환경 보장
      • 컨테이너는 격리된 공간이므로 그 자체에 특별한 권한을 주지 않는 한 내부에서 무엇을 하든 Host OS에는 영향을 끼치지 않는다.
    • 개발/운영 환경의 통합
      • 컨테이너 내부 작업을 배포하기 위해서는 해당 컨테이너를 docker image라는 하나의 패키지로 만들어 운영 서버에 전달하기만 하면 된다.
      • 서비스를 개발했을 때의 환경을 다른 서버에서도 똑같이 복제할 수 있기 때문에, 각종 라이브러리 설치 등으로 인한 의존성 문제가 없어진다.
    • 배포 신속성 및 하드웨어 효율
      • 커널을 포함하고 있지 않기 때문에 docker image 크기가 비교적 작다. 따라서 Application의 배포 속도가 매우 빨라지며, 하드웨어 용량을 작게 차지합니다.
  • 여러 Application의 독립성과 확장성이 높아진다.
    • Microservice Architecture 구성에 용이하다.
      컨테이너를 이용해서 여러 모듈을 독립된 형태로 구성하므로 언어에 종속되지 않고, 변화에 빠르게 대응할 수 있다.

컨테이너 이미지

컨테이너 이미지는 코드, 런타임, 시스템 도구, 시스템 라이브러리 및 설정과 같은 응용 프로그램을 실행하는데 필요한 모든 것을 포함하는 가볍고 독립적이며 실행 가능한 소프트웨어 패키지 이다.

또한 컨테이너 이미지는 런타임에 컨테이너가 되고 도커 컨테이너의 경우 도커 엔진에서 실행될 때 이미지가 컨테이너가 된다.

리눅스와 윈도우 기반 애플리케이션 모두에서 사용할 수 있는 컨테이너화된 소프트웨어는 인프라에 관계없이 항상 동일하게 실행 된다.

컨테이너는 소프트웨어를 환경으로부터 격리시키고 개발과 스테이징의 차이에도 불구하고 균일하게 작동하도록 보장한다.

결론
도커 이미지는 프로그램을 실행하는데 필요한 설정이나 종속성을 갖고 있으며, 도커 이미지를 이용해서 컨테이너를 생성하며 도커 컨테이너를 이용하여 프로그램을 실행한다.

Leave a comment