Docker是指容器化技术,用于支持创建和实验Linux Container。借助Docker,你可以将容器当做重量轻、模块化的虚拟机来使用,同时,你还将获得高度的灵活性,从而实现对容器的高效创建、部署和复制,并能将其从一个环境顺利迁移至另外一个环境。
本节索引:
一、容器的概念
二、LXC技术介绍
三、Docker技术介绍
四、Docker基本配置与安装
一、容器的概念
什么是容器?
google在它的词条中这样定义:
容器是一种基础工具;泛指任何可以用于容纳其它物品的工具,可以部分或完全封闭,被用于
容纳、储存、运输物品;物体可以被放置在容器中,而容器则可以保护内容物;
人类使用容器的历史至少有十万年,甚至可能有数百万年的历史;
而在计算机领域:
容器(container)是指是与系统其他部分隔离开的一系列进程,从另一个镜像运行,并由该镜像提
供支持进程所需的全部文件。容器提供的镜像包含了应用的所有依赖项,因而在从开发到测试
再到生产的整个过程中,它都具有可移植性和一致性。
容器与虚拟化的区别?
很多人分不清容器与虚拟化的区别。容器是虚拟化吗?是,但也不竟然,简单来说:
虚拟化使得多个操作系统可同时运行在单个系统上
容器则可共享同一个操作系统的内核,将应用程序与系统其它部分隔离开
这意味着什么?首先,让多个操作系统在单个虚拟机监控程序上运行以实现虚拟化,并不
能达成和使用容器同等的轻量级效果。事实上,在仅拥有容量有限的有限资源时,您需要能
够可以进行密集部署的轻量级应用。Linux 容器可从单个操作系统运行,在所有容器中共享该
操作系统,因此应用和服务能够保持轻量级,并行快速运行。
容器技术发展历史:
2000年,计算机中的容器概念出现,当时称为FreeBSD jail
2001年,LXC(Linux Container)诞生,容器技术通过VServer项目,进入到了Linux领域,
这项工作的目的是“在高度独立且安全的单一环境中运行多个通用 Linux 服务器”。
2008年,Docker容器技术通过 dotCloud 登上了舞台。Docker 技术将 LXC 工作与经过改进的
开发工具结合在一起,从而提高了容器的用户友好度。Docker 是一种开源技术,也是当前最广
为人知的、用于部署和管理 Linux 容器的项目和方法。
二、LXC技术介绍
在上文中,我们了解到docker其实就是对LXC进行二次封装,具备多个强大功能的工具集,它有
着更好、更简易的操作
所以要想学习docker,就必须先了解Linux Container的工作原理
LXC:Linux Container,最早一批真正把容器技术用一组简易模板实现的解决方案
LXC主要用到名称空间(name space)与控制组(cgroups)的技术,其中
namespace:负责隔离一个独立的容器所必须具备的资源
cgroups(Control Groups):实现对系统资源的分配与度量
Linux Container基本架构:
namespace
一个隔离的Linux Container必须具有以下资源:
UTS:独立的主机名,域名
IPC:进程间通信和共享内存
PID:独立的init
Network:独立的网卡,TCP/IP协议栈
Mount:独立的根,文件系统
User:独立的root
cgroups(Control Groups)
功能:实现资源的分配和度量
blkio:块设备IO
cpu:CPU
cpuact:CPU资源使用报告
cpuset:多处理器平台上的CPU集合
devices:设备访问
frezr:挂起或恢复任务
meory:内存用量及报告
perf_evnt:对cgroup中的任务进行统一性能测试
net_cls:cgroup中的任务创建的数据报文的类别标识符
三、Docker技术介绍
Docker是指容器化技术,用于支持创建和实验Linux Container。借助Docker,你可以将容器
当做重量轻、模块化的虚拟机来使用,同时,你还将获得高度的灵活性,从而实现对容器的
高效创建、部署和复制,并能将其从一个环境顺利迁移至另外一个环境。
Docker官方网站:http://www.docker.com
Github Docker 源码:https://github.com/docker/docker
基础特性:
基于C/S架构应用程序
模块化
层与镜像版本控制
支持回滚
快速部署
Docker的应用场景
Web 应用的自动化打包和发布。
自动化测试和持续集成、发布。
在服务型环境中部署和调整数据库或其他的后台应用。
从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。
Docker基础架构图:
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器
Docker 容器通过 Docker 镜像来创建
DOCKER_HOST:真正运行容器的主机
Containers:容器,独立运行的一个或一组应用
Images:镜像,用于创建 Docker 容器的模板
Registry:镜像仓库
镜像image与容器Container区别:
镜像是静态的,不会运行
容器则是动态的,有生命周期
doctor容器镜像站:https://hub.docker.com
Docker object:
image
containers
networks
volumes
plugins
四、Docker基本配置与安装
目前docker版本分为docker ce(社区版)与docker ee(企业版)
Docker EE相对于Docker CE增加了额外的支付产品和支持,安全性更好
以下安装实验我们基础环境均为:
操作系统:CentOS 7.4
Docker版本:docker ce
安装docker基础条件:
64 bits CPU
Linux Kernl 3.10+
Linux Kernl cgroups and amespaces
Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。
Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版
本为 2.6.32-431 或者更高版本。
示例:yum安装docker ce
注意:系统安装库中必须包含base源、extras源及updates源安装包
由于官网速度较慢,我们以aliyun镜像库中的docker ce安装为例:
下载docker ce库
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum repolist
直接yum安装docker ce
yum install docker ce -y
启动docker
systemctl start docker
启动docker后,网卡中将出现一块名称为docker0的虚拟桥接网卡,用于连接宿主机与
docker容器间的通讯
查看docker版本
docker version
docker info #查看详细信息
测试运行 hello-world
docker search 可以搜索包含搜索词的docker image
docker run hello-world
由于本地没有hello-world这个镜像,所以会下载一个hello-world的镜像,并在容器内运行。
显示本地已有镜像
docker image ls
示例:镜像加速
鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,我们可以使用加速器来提升获取Docker
镜像的速度,以阿里云加速器为例:
加速器地址:https://e3m7by4j.mirror.aliyuncs.com
针对Docker客户端版本大于 1.10.0 的用户
配置加速器:
vim /etc/docker/daemon.json
{
“registry-mirrors”: [“https://e3m7by4j.mirror.aliyuncs.com”]
}
重启docker服务
systemctl restart docker.service
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/104355