文章概要:
Docker 概述
• 部署 docker 容器虚拟化平台
• docker 镜像制作方法
• Container 容器端口映射
1. Docker概述:
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架或包装系统。
Docker 是 dotCloud 公司开源的一个基于 LXC 的高级容器引擎,源代码托管在 Github 上, 基于 go 语言并遵从 Apache2.0 协议开源。
Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的 container 中,然后发布到任何流行的linux机器上。
Image 和 Container 的关系:image 可以理解为一个系统镜像,Container 是 Image 在运行时的一个状态。如果拿虚拟机作一个比喻的话,Image 就是关机状态下的磁盘文件,Container 就是虚拟机运行时的磁盘文件,包括内存数据。
dockerhub:dockerhub 是 docker 官方的镜像存储站点,其中提供了很多常用的镜像供用户下载,如ubuntu, centos 等系统镜像。通过 dockerhub 用户也可以发布自己的 docker 镜像,为此用户需要注册一个账号,在网站上创建一个 docker 仓库。
2. Docker 核心技术
1) Namespace — 实现 Container 的进程、网络、消息、文件系统和主机名的隔离。
2) Cgroup — 实现对资源的配额和度量。Cgrout 的配额,就像 vmware 虚拟机中的配置参数:可以指定 cpu 个数,内存大小等。
3. Docker特性
文件系统隔离:每个进程容器运行在一个完全独立的根文件系统里。
资源隔离:系统资源,像 CPU 和内存等可以分配到不同的容器中,使用 cgroup。
网络隔离:每个进程容器运行在自己的网络空间,虚拟接口和 IP 地址。
日志记录:Docker 将会收集和记录每个进程容器的标准流(stdout/stderr/stdin),用于实时检索或批量检索。
变更管理:容器文件系统的变更可以提交到新的镜像中,并可重复使用以创建更多的容器。无需使用模板 或手动配置。
交互式 shell:Docker 可以分配一个虚拟终端并关联到任何容器的标准输入上,例如运行一个一次性交互
4. Docker优缺点:
优点:
1) 一些优势和 VM 一样,但不是所有都一样。比 VM 小,比 VM 快,Docker 容器的尺寸减小相比整个虚拟机大大简化了分布到云和从云分发时间和开销。 Docker 启动一个容器实例时间很短,一两秒就可以启动一个实例。
2) 对于在笔记本电脑,数据中心的虚拟机,以及任何的云上,运行相同的没有变化的应用程序,IT 的发布速度更快。Docker 是一个开放的平台,构建,发布和运行分布式应用程序。Docker 使应用程序能够快速从组件组装和避免开发和生产环境之间的摩擦。
3) 您可以在部署在公司局域网或云或虚拟机上使用它。
4) 开发人员并不关心具体哪个 Linux 操作系统使用 Docker,开发人员可以根据所有依赖关系构建相应的软件,针对他们所选择的操作系统。然后,在部署时一切是完全一样的,因为一切都在 DockerImage 的容器在其上运行。开发人员负责并且能够确保所有的相关性得到满足。
5) Google,微软,亚马逊,IBM 等都支持 Docker。
缺点:
1) Docker 支持 Unix/Linux 操作系统,Windows 或 Mac需要借助于Boot2Docker。
2)Docker 用于应用程序时是最有用的,但并不包含数据。日志,跟踪和数据库等通常应放在 Docker 容器外。
5. 安装Docker环境
OS : RHEL7.2 64位
1) 修改yum源
vim /etc/yum.repos.d/docker.repo, 加入以下内容:
[dockerrepo]
name=Docker Repository
baseurl=http://yum.dockerproject.org/repo/main/centos/7/
enabled=1
gpgcheck=0
2) 开启路由转发功能,否则容器中的无法上网
echo 1 > /proc/sys/net/ipv4/ip_forward
3) 安装Docker引擎
yum install docker-engine -y #到官网下载即可
4) 启动Docker服务
systemctl start docker
systemctl enable docker #开机启动
5) 检查是否安装成功
docker version #可查看docker版本信息则安装成功。
6) docker info #查看Docker 中容器总体状况。