Docker入门
Docker
什么是Docker?
Docker 是基于 Go 语言实现的开源容器项目, 诞生于 2013 年年初, 最初发起者是 dotCloud 公司.
Docker 项目已经加入了 Linux 基金会, 并遵循 Apache2.0 协议开源.
Dokcer 是一款轻量级, 高性能的虚拟化技术, 目前互联网使用最多的虚拟化技术, Docker 虚拟化技术的本质类似集装箱机制, Docker 虚拟化是一个开源的容器引擎,可以让开发者打包他们的应用程序及依赖包到一个可移植的容器中, 然后发布到任何机器上运行.
Docker 的基础是 Linux容器(LXC)等技术, 在 LXC 的基础上 Docker 进行了进一步的封装, 用户可以不关心容器的管理, 使得操作更为简单, 用户操作 Docker 的容器就像操作一个快速轻量级的虚拟机一样简单.
虚拟化的概念
虚拟化就是把物理资源转换为逻辑可以管理的资源, 可以打破物理结构之间的壁垒, 计算元件运行在虚拟的基础上而不是真实的基础, 可以扩大硬件的容量, 简化软件的重新配置过程.
虚拟化技术允许在一个平台同时运行多个操作系统, 并且应用程序都可以再相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率, 是一个为了简化管理,优化资源的解决方案.
虚拟化解决方案的底部是要进行虚拟化的物理机器,这台机器可能直接支持虚拟化,也可能不会直接支持虚拟化,那么就需要系统管理程序层的支持。虚拟机管理程序(Virtual machine monitor),或称为 VMM,可以看作是平台硬件和操作系统的抽象化,VMM本质是我们常说的虚拟化技术软件。
目前主流的虚拟化技术:
- KVM
- ESXI
- XEN
- Docker
- Hyper-V
KVM虚拟化概念
KVM 虚拟化全称为: kernel-based Virtual Machine, 是一个开源的系统虚拟化模块, 基于内核的虚拟机.
KVm 是一款支持虚拟机的技术, 是Linux 内核中的一个功能模块, 他在 linux -2.6.20 之后的任何 Linux 分支中都被支持,
Qemu
QEMU是一个主机上的VMM(virtual machine monitor),也是一款虚拟化技术,就算不是用 KVM ,单纯的 qemu 也可以完全实现虚拟机.
Qemu-kvm 也是一种虚拟化技术, 他对 kvm 技术的不足(网卡的虚拟),和性能上进行了优化.
Libvirt
Libvirt 提供一系列函数库, 用其他技术调用, 来管理机器上的虚拟机, 包括各种虚拟机技术, KVM, Xen 与LXC,不同虚拟机技术就可以使用不同驱动调用 Libvirt 提供的 api 对虚拟机进行管理, 我们创建的各种虚拟机都是基于 libvirt 库机相关命令进行管理.
Docker 与 传统架构虚拟化对比
特 性 | 容 器 | 虚拟机 |
启动速度 | 秒级 | 分钟级 |
性能 | 接近原生 | 较弱 |
内存代价 | 很小 | 较多 |
磁盘使用 | 一般为 MB | 一般为GB |
运行密度 | 支持上千个容器 | 一般几十个 |
隔离性 | 安全隔离 | 完全隔离 |
迁移性 | 优秀 | 一般 |
传统虚拟化结构
KVM, XEN, ESXI 传统虚拟化(完全,半虚拟化)都是在硬件的基础上, 基于现有的操作系统层面上实现虚拟化,但是不能服用本地主机的操作系统,而必须虚拟出自己的 Guest OS 系统, 然后在Guest OS系统上部署相关的 APP.
Docker虚拟化结构
Docker虚拟化技术是在硬件的基础上, 基于现有的操作系统层面上实现虚拟化, 直接服用本地主机的操作系统, 直接运行 Docker容器, 在 Docker 容器中封装相关的 APP.
LXC技术
Docker 容器化技术结构体系最早为 LXC (Linux Container) + AUFS(Another Union File System) 结构组合. Docker 0.9.0 版本开始引入 LibContainer技术.
LXC 也是一种虚拟化的解决方案, LXC 是基于内核级的虚拟化技术, Linux 操作系统软件服务进程之所以能够独立, 并且系统能够控制每个服务进程的 CPU, 内存资源也是得益于 LXC 容器技术.
Docker 虚拟化技术是在 LXC 技术上进一步封装, 在 Docker 虚拟化技术中, LXC 主要负责资源管理, 而 AUFS 主要负责镜像管理, 而 LXC 又包括 Cgroups, NameSpace,Chroot 等组件,并通过 Cgroups进行资源管理.
Cgroups
Cgroups 又名 Control groups, 是 Linux 内核提供的一种可以限制, 记录, 隔离进程组所使用的物理资源(CPU, Memory, IO,NET)的机制.
Docker快速入门
Docker的安装
[root@test1 ~]# wget -O /etc/yum.repos.d/docker-ce.repo https://mirror.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo 替换 :%s#https://download.docker.com/linux/#https://mirror.tuna.tsinghua.edu.cn/docker-ce/linux/#g [root@test1 ~]# yum install docker-ce -y
Docker加速
编辑文件: /etc/docker/daemon.json 没有则创建文件.
1. 官方加速器 docker.cn { "registry-mirrors": ["https://registry.docker-cn.com"] } 2. 阿里云加速器 容器镜像服务 --> 镜像加速器 3. 163加速器 { "registry-mirrors": ["http://hub-mirror.c.163.com"] }
作者:闫世成
出处:http://cnblogs.com/yanshicheng