원리는 간단 고정 표시기과 경험을은 (a)

간략한 소개

 사용자가 아니라 많은 액세스 할 수 있기 때문에 점점 더 높은 오늘날의 기술, 물리적 서버 성능의 첨단 기술 개발, 서버는 여분의 성능을 선도, 생산 환경을 많이 사용합니다. 비즈니스와 항상 물리적 서버를 구입하는 경우, 정상적인 작동을 보장하기 위해 여러 서버를 배포 할 필요가의 생산은, 분명이 시간은 당신이 실제 시스템 성능의 합리적인 할당을 완료하기 위해 가상화 기술을 필요로 경제적 비용이 크게 증가의 원인이됩니다.
 가상화 기술은 지난 세기에 태어 났지만, 실제 시스템 성능 지난 세기 대규모 가상화 된 환경을 제공하기 위해 명확없는 한, 더 인기가 없다. 대부분의 가상화 기술은 비용 절감이 상당 할 수없이, 생산 환경에 각 회사의 지금 멈출 수없는 경향이 있지만, 또한 IT에게 민첩성, 유연성과 확장 성을 향상시킬 수 있습니다.
 처음 태어난 가상 컴퓨터 기술은 실제 머신에서 동시에 실행하는 여러 가상 머신을 배포 할 수 있습니다, 호스트 수준의 가상화, 메인 프레임 급 가상화는 KVM / XEN의 전형적인 대표이다, 그러나 서로 다양한 가상 머신 사이 영향은 "끝"후 여러 가지 이유로 서버의 경우에도 하나는, 다른 가상 머신과 호스트의 정상적인 작동에 영향을 미치지 않습니다. 그러나이 방법의 단점은 각 가상 머신은 별도의 커널 공간이 있는지 매우 분명하다, 시스템의 자원 소비는 상당하다.
 컨테이너 가상화 기술이 문제를 해결하기 위해, 그것은 큰 커널을 실행하기 위해 설치해야하지만 크게 시스템 자원의 소비를 줄이고, 컨테이너에 통합 서비스 만 런타임 환경, 거기하지 않습니다 "두 번째 클래스"자가 치유 기능, 컨테이너 후 아래로 즉시 폐기하고 그 위치를 정복 할 수있는 컨테이너를 다시 시작 떨어졌습니다 물론,이 기능이 잘 최적화 된 용기를 얻을 수로 운영 및 유지 보수 인력이 필요, 도면은이 둘 사이의 차이이다.
원리는 간단 고정 표시기과 경험을은 (a)

리눅스 네임 스페이스로 구성

 컨테이너 가상화 기술은 많은 장점을 가지고 있지만, 호스트에서 N 컨테이너를 실행하지만, 어떻게 용기와 환경이 개별 용기 사이에 서로 영향을 사이에 안정, 그것은 시급한 문제가되고있다. 각 선박 적은 시스템 자원은 작지만, 그들은 완비 한 참새 수 있습니다. 또한 호스트 이름, 네트워크 인터페이스 카드 및 기타 리소스가 있어야합니다. 이것은 개별 용기 사이에 충돌이없는 해결하기 위해, 리눅스 사용해야 네임
 스페이스는 커널 층에 구현 된 리눅스 시스템의 기본 개념, 즉이 네임 스페이스의 종류의 수는 커널 간의 전개하고, 각 공유 런타임 용기 고정 표시기 코어의 호스트.
 동시에, 각 호스트 사이에 서로 분리하고, 다른 선박의 존재를 인식하지 못합니다, 그가 호스트 시스템의 마스터 인 생각 실행합니다. 따라서 컨테이너는 다음과 같은 여러 네임 스페이스가 있어야합니다
, 루트 파일 시스템 독립형 컨테이너 및 운영 환경을 구축 할 수있는 용기 내에 달성하기 위해 서비스를 시작 : MNT 네임 스페이스
원리는 간단 고정 표시기과 경험을은 (a)
IPC 네임 스페이스 : 확인하기 위해 서로 통신 할 수를 그 컨테이너에서 처리 할 수 있지만,하지 크로스 용기 다른 데이터 컨테이너에 접근
UTS 네임 스페이스 : 호스트 이름과 도메인 이름을 포함하는 시스템을 식별하는 고유 호스트 시스템을 식별하기 위해 사용되는 다른 콘테이너의 동작의 독립적 인
원리는 간단 고정 표시기과 경험을은 (a)
각 용기는 공정 (1)의 PID를 가지고 PID 네임 스페이스 복구 프로세스를 생성하고 관리하는 데 사용
원리는 간단 고정 표시기과 경험을은 (a)
순 네임 스페이스 : 컨테이너 네트워크 등등 포트, TCP / IP 프로토콜 스택을 모니터링하고, 각 컨테이너의 매우 중요한 부분이 동일한 가상 머신 자체 카드가와 유사하다. 당신은 컨테이너와 통신을위한 외부 세계 실행할 때 일부 방화벽 규칙이 자동으로 생성됩니다
컨테이너 네트워크 카드 논리 차트 내를,
원리는 간단 고정 표시기과 경험을은 (a)
컨테이너의보기에서
원리는 간단 고정 표시기과 경험을은 (a)
컨테이너에 네트워크 카드의 호스트를 보려면지도를
원리는 간단 고정 표시기과 경험을은 (a)
자동으로 생성 방화벽 규칙보기 위해
원리는 간단 고정 표시기과 경험을은 (a)
사용자 네임 스페이스 : 각 컨테이너는 별도로해야합니다 호스트와 충돌하지 않는 사용자와 그룹, 그리고, 사용자는 단순히 각 컨테이너 내에서 활동의 범위를 제한합니다
원리는 간단 고정 표시기과 경험을은 (a)

컨테이너 자원 제약

 在使用VMware创建虚拟机时,每个虚拟在安装和启动之前都会有这么一个界面来设置这个虚拟机之前,可以设置此虚拟机占用宿主机的内存,CPU,网卡等硬件设备的大小。
원리는 간단 고정 표시기과 경험을은 (a)
 容器亦是如此,虽然一个容器内的程序可以在其“领地”内行使对所有资源使用权利,但还是要对其做资源限制,容器亦是如此,如果不对容器使用的资源做任何限制,当容器内的资源不够时,容器便会侵蚀宿主机的资源,直至把宿主机的资源占完,成为这台物理机新的“主人”。
 对容器的资源限制还可以提高对于宿主机的安全性,假设一个容器出现漏洞被别人拿到控制权后,资源限制可使其只能够使用这个容器中的资源,而无法对宿主机的资源形成危害。
 那么为了避免物理机的“主人”被其它容器取而代之,就需要一些手段来限制,主要使用的技术便是Linux control groups,简称Linux Cgroups。它的主要作用是限制一个进程组能够使用的资源上限,包括 CPU、内存、磁盘、网络带宽等等。此外,还能够对进程进行优先级设置,以及将进程挂起和恢复等操作。
 在容器使用的过程中,一旦内存超过期初给它分配了空间,那么内核将主动杀死这个容器所使用的进程。
此功能在内核层默认已经开启,验证系统的Cgroups是否开启
원리는 간단 고정 표시기과 경험을은 (a)
Cgroup的具体实现
원리는 간단 고정 표시기과 경험을은 (a)
blkio:块设备 IO 限制
cpu:使用调度程序为 cgroup 任务提供 cpu 的访问
cpuacct:产生 cgroup 任务的 cpu 资源报告
cpuset:如果是多核心的 cpu,这个子系统会为 cgroup 任务分配单独的 cpu 和内存
devices:允许或拒绝 cgroup 任务对设备的访问
freezer:暂停和恢复 cgroup 任务。
memory:设置每个 cgroup 的内存限制以及产生内存资源报告
ns:命名空间子系统
perf_event:增加了对每 group 的监测跟踪的能力,可以监测属于某个特定的 group 的所 有线程以及运行在特定 CPU 上的线程
 有了这些就具备了容器的基础运行环境,但是还需要有相应的容器创建与删除的管理工具、以及怎么样把容器运行起来、容器数据怎么处理、怎么进行启动与关闭等问题需要解决,于是容器管理技术便应运而生。

容器管理工具

 容器的管理技术早期诞生的有 Linux Container(LXC),它可以提供轻量级的虚拟化来隔离各个容器之间的通讯。但是LXC启动容器依赖于模板,而模板需要一步步创构建文件系统、准备基础目录及可执行程序等一堆步骤才可使容器运行,另外后期代码升级也需要重新从头构建模板。
 折旧与容器的理念背道而驰,容器本身是为了简化操作而诞生的,如此大费周折的启动一个容器,显然不是生产环境中所期望的,后来由于docker的诞生,便以势不可挡之势侵占了大部分LXC的市场。
 然而并不是说docker启动容器时不需要模板,docker也是需要的。只是它把这些模板包装成为一个个的镜像。而docker的镜像即可以保存在一个公共的地方供所有人共享使用,也可以保存在本地的私有仓库中使用。
 当我们在使用镜像时,只要把别人制作的镜像下载下来就可以使用。如果我们觉得别人的配置不符合生产环境中的需求,我们还可以在别人制作的镜像基础之上做自定义配置,配置完成后保存为自己的一个镜像。如此形成了前人栽树后人乘凉的良性循环,这也是容器技术越来越火爆的原因之一
docker官方镜像仓库地址:https://hub.docker.com/

docker 的组成

고정 표시기 호스트 (호스트) : 고정 표시기 서비스 프로세스 및 컨테이너를 실행하기위한 물리적 또는 가상 머신.
고정 표시기 서버 (서버) : 고정 표시기 컨테이너를 실행 고정 표시기 데몬.
고정 표시기 클라이언트 (클라이언트) : 클라이언트는 고정 표시기 순서를 사용하거나 다른 도구는 고정 표시기의 API를 호출합니다.
고정 표시기웨어 (등록) 또는 자식 SVN 버전 제어 시스템 등과 같은 미러 창고 저장
템플릿의 사용의 인스턴스를 생성하는 것으로 이해 될 수있다 미러링 : 고정 표시기 미러 (이미지).
고정 표시기 컨테이너 (컨테이너) 컨테이너는 외부 서비스 제공 업체가 서비스 세트를 생성하거나 미러이다.

추천

출처blog.51cto.com/14163901/2417017