Docker

·2023년 3월 15일
0

1. 도커란?

그룹 PaaS 모델, 오픈소스이며 가볍다.
가장 널리 사용되는 가상화 또는 컨테이너화 기술 중 하나이다.
컨테이너를 사용해 애플리케이션을 구축, 배포 및 실행하면 전체 프로세스가 더 쉽고 비용이 효율적이다.

컨테이너에서 개발자는 필요한 모든 부분을 애플리케이션을 패키징하고 단일 패키지로 래핑한다.
이는 사용자에게 상당한 성능 향상을 제공하고 애플리케이션 크기를 줄여 사용하기 쉽게 만든다.

2. 도커는 어떻게 작동하는가?

Docker는 포괄적인 방식으로 작동한다. 클라이언트-서버 아키텍처를 기반으로 하며 클라이언트, 컨테이너가 있는 데몬으로서의 호스트, 작동할 이미지가 있는 도커 레지스트리가 필요하다.

도커 클라이언트 :

Docker 클라이언트는 여러 Docker 사용자가 Docker와 상호 작용하는 초기 방법이다. Docker 클라이언트는 둘 이상의 Docker 데몬과 통신을 설정할 수 있다.

이미지 :

이미지는 Docker의 템플릿이다. 응용 프로그램의 필수 요소가 포함되어 있다. Docker 컨테이너는 Docker 이미지의 복제본이다.

호스트 or Docker 데몬 :

Docker 데몬 a.k.a 호스트는 명령을 수락한다. 클라이언트에서 또는 REST API 내에서 명령을 받는다. 클라이언트의 경우 명령줄 인터페이스의 도움으로 작업을 수행한다. Docker 데몬은 시스템에 Docker 레지스트리도 있다.

도커 레지스트리 :

호스트 시스템에 있다. Docker 레지스트리는 이미지를 빌드하고 배포한다. 이미지는 팀의 다른 구성원 간에 공유할 수 있다. 관리자의 선택에 따라 이 프로세스는 공개 또는 비공개가 될 수 있다.

3. Docker 레지스트리는 비공개 or 공개가 될 수 있나?

Docker 레지스트리는 스토리지 시스템이다. distributor(배급자) 로서의 역활도 겸하고 있다. Docker 이미지를 저장하고 배포한다. Docker repository 정렬된다. 그러나 Docker 레지스트리는 비공개 또는 공개가 될 수 있다.

Docker 레지스트리가 공용인 경우 저장소의 모든 이미지는 다른 Docker 허브 사용자가 액세스 할 수 있다. 비공개인 경우 이미지가 로컬에서 개발되어 Docker 허브에 배치된다. 다른 Docker 허브 사용자는 액세스 할 수 없다.

4. Docker container의 몇가지 장점을 언급하십시오

  • 여러 progressive 및 릴리즈 주기에서 일관성을 보장한다.
  • 간단하고 쉬운 초기 설정과 함께 제공된다.
  • 애플리케이션 수명 주기를 쉽게 자세하게 설명할 수 있다.
  • 운영 비용을 줄여 비용을 절감
  • Docker는 다른 컨테이너 플랫폼보다 빠르게(7배) SW를 전송할 수 있다.
  • 컨테이너에서 불필요하고 수사학적인 파일을 유지하는 데 도움이 된다.
  • 로컬 개발 기계를 생산 폐기로 옮기는 경우 인생을 바꾸는 경험을 하게 될 것이다.

5. Docker를 사용해야 하는 이유

Docker를 사용하면 컨테이너 기술로 서버 에코시스템을 원활하게 관리할 수 있다. 이 기능은 다양한 개발 환경에서 작업하는 개발자에게 매우 효율적이다.

또한 Docker 컨테이너는 Docker를 실행할 수 있는 모든 시스템과 호환된다. Docker를 사용하면 팀 구성원 내에서 컨테이너의 정확한 사양을 포함하는 Docker 파일을 쉽게 배포할 수 있다.

6. Docker의 중요한 기능

  • 쉬운 아키텍쳐
  • 향산된 생산성
  • 간편한 애플리케이션 격리 기술
  • 스마트 보안 관리
  • Docker Swarm 통합 - Docker용 클러스터링 및 스케쥴링 메커니즘
  • routing mesh 제공
  • 신뢰할 수 있는 서비스

7. Docker에 대한 몇가지 대안

쿠버네티스 , 오픈 컨테이너 이니셔티브(OCI), virtual box

8. Docker와 Kubernetes 차이점

  • Docker는 설정이 더 쉽지만 강력한 cluster가 없다. Kubernetes는 강력한 cluster 보장하는 복잡한 설정과 함께 제공된다.
  • Docker는 Kubernetes보다 5배 빠른 확장성을 제공한다.
  • Kubernetes와 달리 Docker에는 GUI가 없다.
  • Docker의 클러스터링 및 스케줄링 도그인 Docker Swarm은 자동 로드 벨런싱을 제공하는 반면 Kubernetes에서는 트래픽 로드 밸런싱을 위해 수동 개입이 필요하다.
  • Docker Swarm은 로깅 및 모니터링을 위해 타사 도구가 필요하지만 Kubernetes는 그렇지 않다.
  • Docker Swarm은 다른 컨테이너와 스토리지 볼륨 쉽게 공유할 수 있지만 Kubernetes는 동일한 포드의 다른 컨테이너와 스토리지를 공유할 수 있기 때문에 데이터 볼륨 측면에서는 제한적이다.

9. Docker의 주요 단점

  • 리눅스 운영체제에서 실행 가능한 sw만 지원
  • 물리 서버 한대에 여러 개의 컨테이너를 올리는 형태로 호스트서버(물리 서버)에 문제가 생기면 모든 컨테이너에 영향을 미쳐 치명적이다.
  • 프로그램 여러개 운영하는 것 아니라 하나만 운영할 경우 오히려 오버헤드가 커질 수 있다.

10. Docker는 VM인가?

컨테이너에는 가상 머신과 유사한 resource 분리 이점이 있다.
사실, 둘 다 거의 동일한 할당 유틸리티 공유.

컨테이너는 가상 머신이 하드웨어를 시뮬레이션 하는 운영체제를 가상화한다. 컨테이너를 쉽게 이동할 수 있고 매우 효율적이다. 그리고 각각 분리되어 실행되니 때문에 하나의 OS 커널로 공유할 수 있다. 컨테이너는 VM보다 공간을 덜 차지한다.

그러나 모든 VM은 하드웨어를 시뮬레이션하는 동안 모든 운영 체제의 복제본을 포함한다. OS 사본에는 응용 프로그램, 필수 바이너리 및 기타 중요한 구성 요소 포함된다. 컨테이너보다 훨씬 더 많은 공간을 차지한다.

11. Docker 엔진이란?

Docker 엔진은 클라이언트-서버를 나타냅니다.
Docker 요소와 서비스를 사용해 컨테이너를 만들고 실행한다.
Docker 엔진과 클라이언트는 모두 동일한 호스트에 있어야 한다.
엔진은 클라이언트 측 CLI(명령줄 인터페이스)를 제공한다.
이를 통해 클라이언트와 엔진 간의 연결을 설정할 수 있다.

12. Docker 이미지

몇가지 지침에 따라 Docker 이미지가 생성된다.
이 지침은 작업중인 응용 프로그램의 완전히 실행 가능한 버전을 만드는 데 중점을 둔다.
Docker 이미지 파일은 결국 Docker 컨테이너에서 코드를 실행하는 데 사용되는 다양한 앱 계층으로 구성된다. 이러한 이미지들이 결합되 컨테이너를 구성한다.

13. Docker 컨테이너

Docker 이미지에서 생성된 애플리케이션 패키지이다.
애플리케이션 실행하는 데 필요한 전체 패키지를 보유한다.
컨테이너는 Docker의 주요 유틸리티 공급자이다.
이를 통해 사용자는 중단 없이 크로스 플랫폼 기반으로 작업할 수 있다.
또한 Docker 컨테이너는 다른 VM보다 적은 공간 차지한다.

14. 도커 허브

Docker 허브는 가장 큰 커뮤니티 서비스 중 하나다. Docker 자체에서 제공
Docker 컨테이너를 위한 거대한 라이브러리 모음이다. 이미지를 찾고 공유하기 이상적인 장소며 100,000개 이상의 Docker 이미지들이 있다.

15. 도커 레지스트리

Docker 이미지 저장소이다. 이미지를 배포한다. Docker 저장소로 정렬된다.
단일 이미지는 다른 버전을 가질 수 있다. 그러나 Docker 저장소의 태그로 식별된다. 이러한 저장소는 특정 이미지의 사용 가능한 모든 버전을 유지한다.

Docker registry는 사용자 의도에 따라 비공개, 공개가 될 수 있다. Docker 레지스트리는 Docker 리포지토리 그룹 보유할 수 있다.

16. Docker 아키텍쳐의 3가지 구성

  • 고객 : Docker 클라이언트는 Docker 명령을 trigger 한다.
  • 서버/호스트 : Docker Host는 이미지가 있는 컨테이너로 구성된 도커 데몬을 실행한다.
  • 레지스트리 : 공개, 비공개일 수 있는 허브에 Docker 이미지를 저장한다.

17. Docker 아키텍쳐 작동

CLI(클라이언트)를 사용해 서버의 Docker 데몬에 빌드 명령을 보낼 수 있다. 그 후 Docker 데몬은 주어진 입력으로 이미지를 빌드하고 registry에 저장한다. 이 registry는 Docker 허브 또는 로컬 저장소가 될 수 있고 공용, 개인으로 쓸 수 있다.

18. Dockerfile 빌드

https://gptjs409.github.io/infra/2019/10/23/image-build.html

19. Docker 이미지 어떻게 구축할 수 있는가

https://changhoi.kim/posts/docker/docker-development-env-(1)/

20. Docker Swarm


https://seongjin.me/docker-swarm-introduction-nodes/

21. Docker Engine과 Daemon 차이점

Docker는 애플리케이션이 다양한 환경에서 원활하게 작동할 수 있도록 경량 컨테이너에서 애플리케이션 배포를 자동화하는데 사용한다.

Docker Engine : Docker 구성 요소를 사용해 컨테이너를 빌드하고 실행하는 클라이언트-서버 애플리케이션이다. 이것은 Docker 기본 엔진이고 도킹된 명령은 필요하지 않다. Engine과 Daemon 간의 기본 통신 모드는 REST API이다.

Docker Daemon : Docker Daemon은 서버다. OS와 상호 작용한다.. 이러한 방식으로 Docker Daemon은 모든 유형의 작업을 수행할 수 있다. 엔진과 달리 도커 데몬은 도커 데몬을 시작하기 위해 도킹된 명령이 필요하다.

22. Docker 인기 있는 이유

  • 시스템의 원활한 확장 :
    컨테이너는 컴퓨팅 하드웨어를 덜 차지 한다.

  • 유연성 : Docker는 애플리케이션을 압축한다. 그리고 컨테이너화된 애플리케이션을 처리하는 것은 컨테이너화되지 않은 다른 애플리케이션보다 유연하다.

  • SW 정의 네트워킹 : Docker에서는 SW로 네트워킹을 정의할 수 있다. 복잡한 네트워크 토폴로지가 있는 시스템은 구성 파일에서 설계 및 정의할 수 있다. 보안에 이점이 된다.

  • 더 나은 SW 제공 : 컨테이너가 머신에서 작동하는 경우 개발, 스테이징 및 프로덕션 환경에서 동일한 방식으로 실행된다. 컨테이너 바이너리 또는 원시 코드(source code)를 배포할 때 구성 변동 문제를 제거할 수 있다.

23. Docker 하드웨어 및 SW 요구사항

https://techdocs.broadcom.com/kr/ko/ca-enterprise-software/it-operations-management/application-performance-management/10-5/345391096/345391130/442243164.html

24. Docker에서 노드란?

Docker Swarm은 단일, 다중 노드로 구성되고 두가지 유형의 노드는
관리자, 작업자 노드이다.

  • 관리자 노드 : Docker의 관리자 노드는 클러스터 관리와 관련된 작업을 처리한다. 클러스터 환경의 유지 관리를 제공하고 Docker 서비스 예약해 swarm 모드를 지원한다. HTTP API 엔드포인트.

  • 작업자 노드 : 컨테이너를 수행함. 관리자가의 작업에 참여하지 않는다.

관리자 노드 쉽게 생성할 수 있지만 작업자 노드는 관리자 노드가 하나이상 있어야 생성 할 수 있다.

25. Docker는 어떻게 돈을 버나?

Docker는 오픈 소스 기술이다. 그러나 회사는 Enterprise Edition 제공하고 Docker Hub에 저장소를 제공한다
기술 지원에 대한 구독료를 고객에게 청구하고, 컨테이너 이미지 저장, 컨설팅 및 교육 서비스 제공해 수익 창출

26. Docker는 비즈니스에 어떤 도움이 될까?

Docker Enterprise Container Platform

  • 통합 VM 최소 25% 절약할 수 있다.
  • Docker 유지 보수 및 수리비용 1/10 수준이라 비용 절약 가능
  • Docker 속도는 최소 40% 시간을 절약
  • 애플리케이션 Docker에서 75% 더 빠르게 배포된다.

27. Docker는 어떻게 비즈니스 프로세스와 가치를 향상시킬 수 있나

  • 시간 절약
  • 응용 프로그램 창의성 높이는 동시 많은 공간과 번거로움 없이 사용할 수 있다.
  • 컨테이너 기술은 개발자 온보딩 시간을 65% 까지 줄일 수 있다.
  • Docker는 적극적인 접근 방식으로 보안 위험을 관리.

28. Docker가 IT 회사에 제공하는 이점

IT 환경 현대화, 애플리케이션 업데이트 및 변경 쉽게 만든다.
컨테이너가 모든 인프라에서 독립적으로 실행되기 때문에 가능하다.
Docker는 애플리케이션 안전성과 가용성 향상시켜 IT 회사가 보안 위험을 사전에 보다 더 쉽게 관리할 수 있도록 한다.

29. Windows에서 Docker 실행할 수 있나

실행되지 않는다. Docker 엔진은 Linux 관련 커널 기능 사용해 Linux 가상 머신이 필요하다.

Docker Machine 명령 사용해야하는데 이 명령은 사용자 장치에서 소규모 Linux VM 구축해 연결할 수 있다.
VM만 Windows 운영체제에서 Docker 엔진을 호스팅 할 수 있다.
Docker window 데스크톱 버전 사용하면 실행할 수 있다.

30. Docker는 어떤 다른 플랫폼에서 실행되나?

Linux, Windows 및 기타 클라우드 서비스에서 수행할 수 있다.

31. 컨테이너화

컨테이너화는 애플리케이션의 모든 구성 파일, 라이브러리 및 기타 종속성 모두 패키징하는 프로세스
애플리케이션이 완벽하게 작동하고 다른 컴퓨터 생태계와 안전하게 호환되는데 필요한 모든 것이 컨테이너화 프로세스에 포함된다.

32. 컨테이너 종료될 때 데이터 잃을 수 있나요

Docker 사용자는 도커와 함께 제공되는 데이터 사용량 잘 알고 있어야 한다.
컨테이너 종료되거나 다시 시작되면 일정량의 데이터 손실된다.

버그는 아니지만 실제로는 기능이다. 이렇게 하면 Docker는 컨테이너를 원래 상태에서 무너뜨리거나 다시 빌드할 수 있도록 한다. 그러나 데이터의 완전한 손실 방지하기 위해 데이터 저장하는데 일정한 volume 사용할 수 있다.

33. Docker 컨테이너 얼마나 크게 확장할 수 있나요

확장성 매우 좋다. Google, Twitter, Facebook, Heroku와 같은 대기업은 컨테이너 기술 사용한다.

34. Docker 컨테이너에서 여러 프로세스 실행할 수 있나요


Docker는 애플리케이션 가상화에 사용된다. 단일 도커 컨테이너에서는 단일 프로세스만 실행하는것이 좋다. 따라서 하나의 컨테이너에서 하나 이상의 프로세스 실행하는것은 컨테이너의 효율성과 원활한 작동을 방해할 수 있어 권장하지 않는다.

그러나 Docker 컨테이너에서 둘 이상의 프로세스를 실행하는 몇가지 강제적인 방법이 있다.
이렇게 하려면 여러 프로세스로 시작할 수 있는 DockerFile을 만드는 것으로 시작해야 한다.

35. 각 호스트에서 몇 개의 컨테이너를 실행할 수 있나

호스트당 실행되는 컨테이너의 수는 환경의 기능에 따라 다르다.
각 컨테이너에 있는 애플리케이션의 특성과 크기, CPU 성능 등등...
컨테이너가 사용 가능한 리소스를 가장 효율적으로 사용하는지 확인

36. Docker는 인프라를 실행하는 데 어떻게 도움이 되나?

기술적으로 Docker는 인프라를 관리하지 않는다. 오히려 다양한 인프라에서 애플리케이션의 원활한 실행을 관리한다. 이 플랫폼은 애플리케이션을 구성한다. 또한 Docker Datacenter와 같은 인프라 유형에 관계없이 애플리케이션이 중단 없이 실행될 수 있는지 확인한다.
기업은 인프라 관리하거나 실행하는 팀을 용이하게 할 수 있는 추가 이동성과 운영 제어를 이용할 수 있다.

37. Docker에 하드웨어 구성 요소가 있나?

Docker에는 하드웨어 구성요소가 없다. SW를 위한 플랫폼일 뿐 이다.

38. Docker 컨테이너가 완전한 OS를 packaging 할 수 있나?

Docker Container는 애플리케이션이 수행하는 데 필요한 모든 것을 포함해 애플리케이션만 packaging 한다. Docker 컨테이너는 애플리케이션을 쉽게 배포하기 위해 전체 OS를 packaging 할 필요가 없다. 이것이 Docker container가 가벼운 이유 중 하나다.

39. Docker가 Kubernetes를 대체할 수 있나?


Docker 와 Kubernetes는 완전히 다른 프로젝트다. Kubernetes와 Docker는 서로 관계없이 작동할 수 있다. 그러나 둘 다 몇가지 이점을 활용하기 위해 서로를 사용할 수 있다.

Docker는 컨테이너화 기술을 사용한다. 이 방법에서 응용 프로그램은 기본적으로 시스템의 나머지 부분과 격리된다. Docker를 사용하면 단일 운영 체제에서 컨테이너를 실행, 개발 및 구성할 수 있다. 반면 Kubernetes는 컨테이너를 개선, 구성, 제거 및 업데이트하는 프로세스를 가속화한다. 처음에 컨테이너를 얻을 수 있게 해주는 컨테이너 오케스틀;이션 시스템이다.

40. Docker는 production에서 어떻게 도움이 되나?

Docker 컨테이너화는 프로세스이다. 구현하려면 생산 시설 전체에 퍼져야 한다. 그렇지 않다면 개발자에게는 번거로움이 많을 것이다.

오히려 생산과정 전반에 걸쳐 컨테이너화 과정을 시행한다면 분명 도움이 될 것이다.

41. Docker에 적용되어야 하는 향후 변경 사항은 무엇인가?

미래에는 Docker에 클라우드 기능이 포함될 수 있다. 그리고 함께 더 혁신적인 것을 만들 수 있다. Kubernetes와 통합하고 병합하는 것도 옵션이 될 수 있다.

Docker의 이런 발전은 아마도 기존 Docker와 Kubernetes를 대체하지 못할 것이다.
하지만 사용자에게 더 많은 유연성과 편의성이 제공된다.

42. 하이퍼바이저란?


하이퍼바이저는 SW/펌웨어 또는 하드웨어의 일부이다. VM 상단에서 작동하며 게스트 VM이 작동할 수 있는 가상 환경을 구축할 수 있다. 하이퍼바이저는 호스트 머신이라고 하는 물리적 컴퓨터에서 실행이 된다. 또한 하이퍼바이저는 CPU 및 RAM을 포함한 적절한 리소스가 게스트 시스템 간에 분산되어 있는지 확인한다.

43. 컨테이너 vs VM : 올바른 선택은 ?


이것은 보드에서 직면할 수 있는 플룻 기반 인터뷰 질문 중 하나이다.
컨테이너를 사용해야 하는지 VM 기술을 사용해야 하는지 여부는 전적으로 애플리케이션 선택에 달려 있다.

최소한의 서버에서 특정 응용 프로그램을 최대로 실행해야 하는 경우 컨테이너를 사용하는 것이 적절하다. 이 경우 컨테이너의 보안이 완전히 잠길 때까지 컨테이너를 실행하는 시스템을 자세히 살펴봐야 한다. 반면 서버에서 여러 애플리케이션을 실행해야 하는 경우 VM으로 이동해야 한다. 또한 VM은 더 나은 보안을 제공한다.

44. 언제 Docker를 사용하지 않아야 하는가?

  • 애플리케이션 성능이 중요하다. 컨테이너에서 실행되는 프로세스는 기본 OS의 프로세스만큼 빠르지 않다. 이 경우 Docker 사용을 피해야 한다.
  • 업그레이드와 관련된 번거로움을 원하지 않을 경우
  • 앱이 복잡하고 시스템 관리자가 없는 경우
  • 애플리케이션 보안이 매우 중요한 경우
  • 여러 운영 체제를 사용하는 경우

45. 가장 많이 사용되는 Docker는 무엇인가?

Docker는 주로 SW산업에서 사용된다 (전체 사용량 40%), IT서비스, 직원 채용, 인터넷, 의료, 금융 서비스, 통신, 컨설팅, 소매 및 컴퓨터 하드웨어 등등..

46. Docker 컨테이너에 IP 주소가 있나?

Docker 컨테이너에는 IP 주소가 있다. 실제로 최신 Docker에서 특정 명령을 적용하면 Docker 컨테이너 IP 주소를 쉽게 볼 수 있다.

47. 도커 첨부란?

터미널의 표준 I/O 및 오류를 활성 컨테이너에 연결하고 컨테이너의 ID 또는 이름을 사용하려는 경우 Docker 연결이 도움이 될 수 있다. 첨부 기능은 표준 입력, 출력 또는 오류의 조합을 사용하는 동안에도 동일한 방식으로 유효하다.
이렇게 하면 실행 중인 출력 production을 대화식으로 모니터링하는 프로세스가 쉬워진다. 동시에 명령은 터미널에서 바로 수행된다.

48. Docker 분리 모드란 무엇인가?

-detach 또는 -d 문을 통해 표시되는 Docker 분리 모드. Docker 컨테니어가 사용자 터미널의 백그라운드에서 수행되고 있음을 의미한다. 또한 현재 입력/디스플레이 출력을 수신하고 있지 않음을 의미한다. 컨테이너가 백그라운드에서 작동할 때 사용자는 컨테이너 세부 정보를 찾을 수 있다. 그런 다음 사용자 터미널을 원래 입력/출력에 다시 연결할 수있다.

49. Docker의 특권 모드는 무엇인가?

Docker 컨테이너는 일반적으로 권한이 없는 모드에서 실행된다. 이렇게 하면 컨테이너 내에서 Docker 데몬을 실행할 수 없다. 그러나 Docker 권한 모드에서는 Docker 컨테이너에 모든 장치에 대한 액세스 권한이 부여된다.

Docker 권한 모드를 사용하면 현재 호스트에 있는 모든 장치에 액세스할 수 있다. 또한 AppArmor 및 Security Enhanced Linux에서 시스템 레이아웃을 설정한다. 이것은 프로세스가 호스트에서 실행되는 동안 동일한 액세스 수준에서 도커 컨테이너를 제공한다.

50. 도커 Entrypoint란 무엇인가?

ENTRYPOINT는 Docker의 명령이다. 이를 통해 실행 가능한 부분으로 작동할 컨테이너를 설계할 수 있다. 이 명령을 사용하면 매개변수로 명령을 정의할 수도 있다. 이것은 마음에 혼란을 야기하고 docker ENTRYPOINT를 CMD와 비슷하게 보이게 할 수 있다. 그러나 그것들은 같지 않다. ENTRYPOINT의 경우 매개변수를 피할 수 없다. Docker 컨테이너는 이러한 매개변수를 무시하지 않고도 명령줄 인수와 동시에 작용할 수 있다.

참고 : https://ciksiti.com/ko/chapters/5766-50-frequently-asked-docker-interview-questions-and-answers

0개의 댓글