개발자 도구로써 Docker의 인지도는 Git만큼 높아졌다.(https://survey.stackoverflow.co/2022/#most-popular-technologies-tools-tech-prof) 많은 기업에서도 Docker에 대한 지식을 요하거나 또는 전환하는 과정을 진행하고 있다. 많은 인기를 누리고 있는 Docker에 대해서 공부해보고자 한다.
ChatGPT 답변:
도커(Docker)는 컨테이너 기술을 이용하여 애플리케이션을 패키징하고 배포하는 플랫폼이다. 애플리케이션을 실행하는 환경을 컨테이너로 분리하여 호스트 운영체제와는 독립적인 실행 환경을 제공하며, 이를 통해 애플리케이션의 배포 및 확장성, 개발자의 작업 효율성 등을 높일 수 있다. 도커는 빠른 배포와 확장성, 효율적인 자원 활용 등으로 인해 클라우드 네이티브 애플리케이션 개발 및 운영에서 핵심적인 역할을 담당하고 있다.
하나씩 뜯어보도록 하자🤔
가상화 기술 중 하나
호스트 운영체제 위에 여러 개의 격리된 환경을 생성
각각의 컨테이너 안에서 애플리케이션을 실행
리눅스 커널의 기능을 사용하여 만들어짐
프로세스 단위의 격리 환경
Q. 도커는 리눅스에서만 사용해야하는가?
A. 그렇지 않다. 하이퍼바이저가 중간에 역할을 해주어서 윈도우나 맥에서도 가능하게 한다.
하지만 컨테이너는 리눅스 커널을 기반으로 돌아가는 기술이다.
Q. 그냥 프로그램 실행하는 것과 무엇이 다른건가?
A. 로컬환경 이외에서도 동일한 환경을 사용 가능한 것
고성능 서버를 조금 더 안정적이고 효율적으로 사용할 수 있을까?
ChatGpt 답변 :
가상화 기술은 하드웨어 자원을 가상적으로 분리하여 여러 개의 가상 환경을 구축하고, 각각의 환경에서 독립적으로 운영체제와 응용 프로그램을 실행할 수 있는 기술이다. 이를 통해 서버의 물리적인 자원을 효율적으로 활용하고, 여러 개의 가상 환경을 별도로 관리할 수 있어서 시스템 유지 보수 및 관리의 효율성을 높일 수 있다.
즉, 물리적인 컴퓨터 자원을 가상적으로 분할하여 여러개의 가상 컴퓨터 환경을 만들어내는 기술.
물리적인 컴퓨터 자원을 효율적으로 사용가능하고, 시스템을 운영하는데 유연성과 안정성을 제공한다.
하이퍼바이저(Hypervisor)
가상화 기술에는 VMWare, VirtualBox, Hyper-V등이 있다.
가상화의 단위가 다르다.
가상화 기술은 하나의 호스트 운영체제 위에 가상 머신을 생성하고, 각각의 가상 머신은 독립적인 운영체제를 실행한다.
컨테이너 기술은 하나의 운영체제 위에서 여러 개의 컨테이너를 생성하고, 각각의 컨테이너는 호스트 운영체제와 커널을 공유하며 독립된 파일 시스템과 프로세스를 가진다.

가상화 기술의 단점 :
가상화 기술은 호스트 운영체제와 가상 머신 간의 인터페이스 레이어가 필요하기 때문에, 실행 속도가 느리고 무겁다는 단점이 있다. 또한, 가상화 기술은 하나의 가상 머신에 여러 개의 애플리케이션을 실행할 수 있지만, 이는 다양한 운영체제와 라이브러리를 설치해야 하기 때문에 컨테이너 기술보다 자원 낭비가 심하다는 단점이 있다.
컨테이너 기술의 장점 :
컨테이너 기술은 호스트 운영체제와 커널을 공유하기 때문에, 실행 속도가 빠르고 경량화된다는 장점이 있다. 또한, 컨테이너 기술은 이미지로부터 빠르게 컨테이너를 생성하고, 호스트 운영체제와 커널을 공유하기 때문에 매우 빠르게 애플리케이션을 실행할 수 있다는 장점이 있다.
출처 : https://docs.docker.com/get-started/overview/
docker run, docker build, docker pull 등..docker pull또는 docker run명령을 사용하면 구성된 레지스트리에서 필수 이미지를 가져오고 docker push을 사용하면 이미지가 구성된 레지스트리로 푸시된다.원티드 프리온보딩 4월 백엔드 강의 수강 후 정리한 내용입니다.