Docker - 1 [개념]

최정환·2022년 5월 5일
0

Docker

목록 보기
1/8
post-thumbnail

🐳 Docker란?

Docker는 애플리케이션을 신속하게 구축, 테스트 및 배포할 수 있는 소프트웨어 플랫폼입니다.
Docker는 소프트웨어를 컨테이너라는 표준화된 유닛으로 패키징하며, 이 컨테이너에는 라이브러리, 시스템 도구, 코드, 런타임 등 소프트웨어를 실행하는 데 필요한 모든 것이 포함되어 있습니다.
Docker를 사용하면 환경에 구애받지 않고 애플리케이션을 신속하게 배포 및 확장할 수 있으며 코드가 문제없이 실행될 것임을 확신할 수 있습니다.

https://aws.amazon.com/ko/docker/



🛠 가상화는 host OS로 Hypervisor를 구동시키고 각각의 자원을 가져가 각각 다른 독립적인 OS를 작동시킨 후에 앱들을 구동시킨다.

이 완전히 독립적인 OS들은 서로를 알지 못하며 host OS도 알지 못한다.

👍 장점 : Hypervisor을 사용한다면 물리적인 서버의 자원을 더 효율적으로 사용이 가능하다.

하나의 OS를 통해 한 서버만 운영한다면 서버가 가진 자원들을 꽉꽉채워 사용하기 어렵기 때문에 자원이 낭비될 수 있다. 때문에 hypervisor를 통해 가상화를 사용한다면 하나의 서버에 여러 OS를 실행시켜 필요한 OS나 서비스에 자원을 할당할 수 있기때문에 자원을 훨씬 효율적으로 사용하게 된다.

👎 단점 : 자원들을 너무 많이 사용한다.

독립적인 OS를 실행하는 것이기때문에 부팅시간이 길어지며 자원을 많이 사용한다.


🐳 Docker는 하이퍼 바이저의 간섭을 최소화 시킨다.

docker의 container는 OS의 커널 위의 유저 공간에서 실행된다.(유저 공간을 가상화한다.)
Docker Engine 하나가 Hypervisor와 Guest OS의 역할을 대신해줄 수 있는 것이다.

👍 장점 : 가볍게 실행이 가능하다.

docker image만 있다면 어디서든 쉽고 빠르게 환경을 설정해 배포가 가능하다.

👎 단점 : 독립적인 OS가 아닌 유저 공간을 가상화하는 형태

유저 공간을 가상화하다 보니 운영체가가 다른 host에서는 실행 시킬 수 없다.
ex) windows를 linux 호스트에서 실행시킬 수 없다.
완전히 독립적이지 않은 가상화이기 때문에 보안적인 측면에선 Hypervisor보다 약하다.



장단점이 명확한데 docker가 hot한 이유

  • 구성 단순화
    Docker는 하나의 Configuration으로 모든 플랫폼에서 실행할 수 있다.
    Configuration 파일을 코드에 넣고 환경 변수를 전달하여 다른 환경에 맞출 수 있다.
    따라서 하나의 Docker 이미지를 다른 환경에서 사용할 수 있다.

  • 코드 관리
    Docker는 일관된 환경을 제공하여 개발을 훨씬 편안하게 만들어준다.
    Docker 이미지는 변경이 불가하기에 개발환경에서 운영 환경까지 애플리케이션 환경이 변경되지 않는 이점이 존재한다.

  • 개발 생산성
    향상 개발 환경을 운영 환경에 최대한 가깝게 복제할 수 있다.
    Docker를 사용하면 코드가 운영 환경의 컨테이너에서 실행될 수 있으며 Docker는 오버 헤드 메모리 용량이 적기에 여러 서비스를 실행하는데 도움이 된다.
    또한 Docker의 Shared Volume을 사용하여 호스트에서 컨테이너의 어플리케이션 코드를 사용할 수 있도록 할 수 있다.
    이를 통해 개발자는 자신의 플랫폼 및 편집기에서 소스 코드를 편집할 수 있으며 이는 Docker내에서 실행 중인 환경에 반영된다.

  • 애플리케이션 격리
    front, back, db를 다 같은 서버에 두지 않고 다른 서버로 서로 격리할 때 다른 컨테이너를 만들고 구동만 한다면 빠르게 실행이 가능하다.









출처:
https://kibua20.tistory.com/135
https://liebe97.tistory.com/3

0개의 댓글