도커는 lxc-tools(사용자 공간 LXC 도구)에 무엇을 추가합니까?
도커의 기능을 살펴보면 대부분 이미 LXC에서 제공하고 있습니다.
그래서 도커는 무엇을 추가합니까?일반 LXC에서 도커를 사용하는 이유는 무엇입니까?
도커 FAQ:
도커는 lxc의 대체품이 아닙니다."lxc"는 프로세스를 서로 샌드박스화하고 리소스 할당을 제어할 수 있는 리눅스 커널(특히 네임스페이스 및 제어 그룹)의 기능을 나타냅니다.
Docker는 커널 기능의 낮은 수준의 기반 위에 다음과 같은 강력한 기능을 갖춘 고급 도구를 제공합니다.
여러 컴퓨터에 걸쳐 휴대용으로 배포합니다.Docker는 애플리케이션과 애플리케이션의 모든 종속성을 단일 개체로 번들하는 형식을 정의합니다. 이 형식은 Docker 지원 시스템으로 전송할 수 있으며 애플리케이션에 노출된 실행 환경이 동일하다는 보장 하에 실행됩니다.Lxc는 휴대용 배포의 중요한 전제 조건인 프로세스 샌드박스를 구현하지만, 그것만으로는 휴대용 배포에 충분하지 않습니다.사용자 지정 lxc 구성에 설치된 응용 프로그램의 복사본을 보낸 경우, 네트워킹, 스토리지, 로깅, 배포 등과 같은 컴퓨터의 특정 구성에 연결되어 있기 때문에 내 컴퓨터에서 실행되지 않을 것입니다.Docker는 이러한 시스템별 설정에 대한 추상화를 정의하므로 동일한 Docker 컨테이너가 다양한 구성을 가진 여러 시스템에서 변경되지 않고 실행될 수 있습니다.
애플리케이션 중심.도커는 컴퓨터와 달리 애플리케이션 배포에 최적화되어 있습니다.이는 API, 사용자 인터페이스, 설계 철학 및 문서에 반영되어 있습니다.이와 대조적으로 lxc 도우미 스크립트는 컨테이너를 경량 머신으로 사용하는데, 기본적으로 부팅 속도가 빠르고 RAM이 덜 필요한 서버입니다.우리는 컨테이너에 그것보다 더 많은 것이 있다고 생각합니다.
자동 빌드.도커에는 개발자가 소스 코드에서 컨테이너를 자동으로 조립할 수 있는 도구가 포함되어 있으며, 애플리케이션 종속성, 빌드 도구, 패키징 등을 완전히 제어할 수 있습니다.그들은 기계의 구성에 상관없이 make, maven, chef, puppet, salt, debian 패키지, rpm, source tarball 또는 위의 모든 조합을 자유롭게 사용할 수 있습니다.
버전 관리.도커에는 컨테이너의 연속 버전 추적, 버전 간 차이 검사, 새 버전 커밋, 롤백 등을 위한 깃과 같은 기능이 포함되어 있습니다.기록에는 컨테이너가 어떻게 조립되었는지, 누가 조립했는지도 포함되므로 프로덕션 서버에서 업스트림 개발자까지 전체 추적 기능을 사용할 수 있습니다.도커는 또한 "깃 풀"과 유사한 증분 업로드 및 다운로드를 구현하여 디프만 전송하여 새 버전의 컨테이너를 전송할 수 있습니다.
구성 요소 재사용.모든 컨테이너를 "기본 이미지"로 사용하여 보다 전문화된 구성요소를 만들 수 있습니다.이 작업은 수동으로 수행하거나 자동 빌드의 일부로 수행할 수 있습니다.예를 들어 이상적인 python 환경을 준비하여 10개의 서로 다른 애플리케이션의 기반으로 사용할 수 있습니다.이상적인 postgresql 설정은 향후 모든 프로젝트에 재사용될 수 있습니다.등등.
나눔.Docker는 수천 명의 사람들이 유용한 컨테이너를 업로드한 공공 레지스트리(https://registry.hub.docker.com/) 에 액세스할 수 있습니다. redis, couchdb, postgres에서 irc bounder, 레일 앱 서버, 하둡, 다양한 디스트리뷰터의 기본 이미지에 이르기까지 무엇이든 액세스할 수 있습니다.레지스트리에는 도커 팀이 관리하는 유용한 컨테이너의 공식 "표준 라이브러리"도 포함되어 있습니다.레지스트리 자체는 오픈 소스이므로 누구나 내부 서버 배포와 같은 개인 컨테이너를 저장하고 전송하기 위해 자신의 레지스트리를 배포할 수 있습니다.
도구 생태계.도커는 컨테이너의 생성 및 배포를 자동화하고 사용자 지정하기 위한 API를 정의합니다.도커와 통합하여 기능을 확장하는 수많은 도구가 있습니다.PaaS와 유사한 구축(Dokku, Deis, Flyn), 다중 노드 조정(maestro, salt, mesos, Openstack nova), 관리 대시보드(Docker-ui, Openstack Horizon, 조선소), 구성 관리(셰프, Puppet), 지속적인 통합(jenkins, 스트라이더, travis) 등.도커는 컨테이너 기반 툴링의 표준으로 빠르게 자리매김하고 있습니다.
이제 Docker의 기술적 기능 목록을 살펴보고 LXC에서 제공하는 기능과 제공하지 않는 기능을 확인해 보겠습니다.
특징:
파일 시스템 격리: 각 프로세스 컨테이너는 완전히 별개의 루트 파일 시스템에서 실행됩니다.
일반 LXC와 함께 제공됩니다.
리소스 분리: cgroups를 사용하여 CPU 및 메모리와 같은 시스템 리소스를 각 프로세스 컨테이너에 다르게 할당할 수 있습니다.
일반 LXC와 함께 제공됩니다.
네트워크 분리: 각 프로세스 컨테이너는 자체적인 가상 인터페이스 및 IP 주소를 가진 자체 네트워크 네임스페이스에서 실행됩니다.
일반 LXC와 함께 제공됩니다.
쓰기 시 복사: 루트 파일 시스템은 쓰기 시 복사를 사용하여 생성되므로 배포 속도가 매우 빠르고 메모리 비용이 저렴하며 디스크 비용이 저렴합니다.
이것은 도커가 의존하는 연합 파일 시스템인 AUFS에서 제공됩니다.LXC를 사용하여 직접 AUFS를 설정할 수 있지만 Docker는 이를 표준으로 사용합니다.
로깅: 실시간 또는 배치 검색을 위해 각 프로세스 컨테이너의 표준 스트림(stdout/stderr/stdin)을 수집하고 기록합니다.
도커가 제공합니다.
변경 관리: 컨테이너의 파일 시스템에 대한 변경 사항을 새 이미지에 커밋하고 더 많은 컨테이너를 만드는 데 재사용할 수 있습니다.템플릿 또는 수동 구성이 필요하지 않습니다.
"템플릿 또는 수동 구성"은 LXC를 참조하는 것으로, 이 두 가지에 대해 모두 알아야 합니다.도커를 사용하면 LXC 구성에 대해 학습하지 않고도 가상 시스템을 처리하는 데 익숙한 방식으로 컨테이너를 처리할 수 있습니다.
대화형 셸: 도커는 유사 tty를 할당하고 일회용 대화형 셸을 실행하는 등 모든 컨테이너의 표준 입력에 연결할 수 있습니다.
LXC는 이미 이것을 제공합니다.
저는 LXC와 도커에 대해 막 배우기 시작했기 때문에 수정하거나 더 나은 답변을 환영합니다.
위의 게시물과 답변은 LXD의 개발이 LXC를 지속적으로 개선함에 따라 빠르게 날짜가 지정되고 있습니다.네, 도커도 가만히 있지 않았다는 것을 압니다.
이제 LXD는 사용자가 LXC 컨테이너 이미지를 푸시/풀하여 제공하거나 재사용할 수 있는 저장소를 구현합니다.
LXD의 LXC에 대한 REST api는 이제 매우 간단한 명령 구문을 사용하여 LXC 컨테이너의 로컬 및 원격 생성/배포/관리를 모두 지원합니다.
LXD의 주요 기능은 다음과 같습니다.
- 안전한 설계(특권이 없는 컨테이너, 리소스 제한 등)
- 확장 가능(노트북의 컨테이너에서 수천 개의 컴퓨팅 노드까지)
- 직관적(단순하고 명확한 API 및 명확한 명령줄 환경)
- 이미지 기반(더 이상 배포 템플릿 없음, 정상적이고 신뢰할 수 있는 이미지만) 실시간 마이그레이션
OpenStack에는 NCLXD 플러그인이 있으므로 OpenStack에서는 LXD를 활용하여 KVM, VMware 등을 사용하는 대신 OpenStack에서 LXC 컨테이너를 VM으로 구축/관리할 수 있습니다.
그러나 NCLXD는 기존 HW VM과 LXC VM이 혼합된 하이브리드 클라우드도 지원합니다.
OpenStack nclxd 플러그인에서 지원되는 기능 목록은 다음과 같습니다.
stop/start/reboot/terminate container
Attach/detach network interface
Create container snapshot
Rescue/unrescue instance container
Pause/unpause/suspend/resume container
OVS/bridge networking
instance migration
firewall support
Ubuntu 16.04가 2016년 4월에 출시될 때까지 블록 장치 지원, 실시간 마이그레이션 지원과 같은 추가적인 멋진 기능이 있을 것입니다.
도커는 레이어에 내장된 이미지를 사용합니다.이는 휴대성, 공유, 버전 관리 및 기타 기능 측면에서 많은 이점을 제공합니다.이러한 이미지는 이식 또는 전송하기가 매우 쉬우며 레이어에 있기 때문에 후속 버전의 변경 사항은 이전 레이어에 걸쳐 레이어의 형태로 추가됩니다.따라서 여러 번 포팅할 때 기본 계층을 포팅할 필요가 없습니다.도커에는 실행 환경이 포함된 상태에서 이러한 이미지를 실행하는 컨테이너가 있으며, 변경 사항을 새로운 계층으로 추가하여 버전을 쉽게 제어할 수 있습니다.
도커 허브 외에도 수천 개의 공개 이미지가 있는 좋은 레지스트리가 있습니다. 여기서 OS 및 기타 소프트웨어가 설치된 이미지를 찾을 수 있습니다.따라서 애플리케이션을 상당히 유리하게 시작할 수 있습니다.
이 피티어를 유지하기 위해, 이것은 이미 위에서 묻고 답했습니다.
하지만 저는 한 발 물러서서 조금 다르게 대답하고 싶습니다. 도커 엔진 자체가 추가적인 기능 중 하나로 오케스트레이션을 추가하고 있습니다. 이것이 바로 파괴적인 부분입니다.앱을 여러 컨테이너 엔진에서 '어디선가' 실행되는 컨테이너의 조합으로 실행하기 시작하면 매우 흥미로워집니다.견고성, 수평 확장, 기본 하드웨어에서 완전한 추상화, 계속...
Docker만이 이 기능을 제공하는 것이 아닙니다. 사실상 컨테이너 오케스트레이션 표준은 다양한 맛의 Kubernetes입니다. Docker 표준은 물론 OpenShift, SuSe, Azure, AWS...
K8S 아래에는 대체 컨테이너 엔진이 있습니다. 흥미로운 것은 Docker와 CRIO입니다. 최근에 데몬이 없는 쿠버네티스 전용 컨테이너 엔진으로 제작되었지만 미숙합니다.컨테이너 엔진을 위한 진정한 장기적 선택이 될 것이라고 생각하는 것은 이들 간의 경쟁입니다.
언급URL : https://stackoverflow.com/questions/17989306/what-does-docker-add-to-lxc-tools-the-userspace-lxc-tools
'codememo' 카테고리의 다른 글
| "SqlParameterCollection은 Null이 아닌 SqlParameter 유형 개체만 허용하고 String 개체는 허용하지 않습니다." (0) | 2023.08.16 |
|---|---|
| ORA-29283: "SYS"에서 잘못된 파일 작업 ORA-06512:.UTL_FILE", 536행 (0) | 2023.08.16 |
| 도커에서 디렉터리 명령을 변경하시겠습니까? (0) | 2023.08.16 |
| 최대 길이로 최대 절전 모드에서 열의 길이를 설정하는 방법 (0) | 2023.08.16 |
| axios에 보류 중인 요청이 있는지 확인합니다. (0) | 2023.08.16 |