linux有哪些容器技术,Linux容器技术和docker

发展历程:

容器技术最早出现在FreeBSD上叫做 jail,将一个进程放入jail中运行,不管这个进程在其中发生怎样的错误都不会影响到系统上其他进程的运行

jail技术在Linux中的实现叫做vserver,vserver所实现的功能体现为chroot

namespaces:

容器技术出现的主要目的是为了"资源隔离"

资源隔离包括:

名称            描述                内核版本

UTS         主机名和域名的隔离        2.6.19

Mount       文件系统的隔离           2.4.19

IPC         进程间通信隔离           2.6.19

PID         进程编号隔离             2.6.24

User        用户空间隔离             3.8

Network     网络空间隔离             2.6.29

为了支持容器技术,Linux在内核中通过namespaces原生支持这6种资源隔离,并且直接通过系统调用对外进行输出

目前Linux上所谓的容器技术就是依靠namespaces技术实现的

cgroups 用于控制每个namespace中的资源分配:

blkio           块设备io

cpu             cpu

cpuacct         cpu资源使用报告

cpuset          多处理器平台上的cpu集合

devices         设备访问

freezer         挂起或恢复任务

memory          内存用量及报告

perf_event      对cgroup中的任务进行统一性能测试

net_cls         cgroup中的任务创建的数据报文的类别标识符

LXC(LinuX Container):

有了namespaces和cgroups那么Linux已经拥有了实现容器技术的前提,这时如果想要使用容器技术可以通过写代码调用系统调用实现容器技术。

但是有多少用户可以写代码实现容器技术那? 所以LXC应运而生,他使用户可以通过一组工具完成容器的创建

lxc中有个命令叫做 lxc-create 用于根据模板创建容器,在模板中定义需要安装的容器系统发行版以及一系列的安装步骤

LXC的问题:

1、迁移困难

2、持久化困了

3、批量创建容器困难

Docker:

Docker在一定程度上是LXC的增强版,早期的Docker使用LXC作为容器引擎,所以也可以说Docker是LXC的二次封装发行版

目前docker使用的容器引擎为runC,其是容器运行时标准的实现之一

Docker使用镜像的方式启动容器,解决了LXC所面临的问题

目前市面上所说的容器通常指Docker,其以成为事实上的工业标准

Docker与传统虚拟机的区别:

1、docker直接构建在Linux操作系统之上,其使用的内核为当前宿主机的内核;虚拟机一般构建在虚拟机管理软件之上,拥有独立的内核

2、由于docker直接使用宿主机内核所以其性能接近宿主机性能;虚拟机使用自己的内核,但是其内核也是虚拟出来的所以需要进行两级调度性能相对较差

3、docker使用内核的namespace进行用户空间隔离,虚拟机使用独立内核。虚拟机的隔离相对较好

4、docker相对虚拟机更加轻量,其他和部署更加方便快捷

5、每个docker容器一般只运行一个进程,一个虚拟机通常运行多个进程

Docker术语:

镜像(Image)

只读模板,用于创建docker容器

容器(Container)

实例化的镜像,在只读层上增加了一层可写层,容器可以启动,停止,删除和修改每个容器都是相互隔离的

仓库(Repository)

集中存放镜像的地方,仓库分为公开仓库(Public)和私有仓库(Private)两种形式

世界上最大的公开仓库是Docker Hub,国内的公开仓库Docker Pool等,类似于yum仓库

用户可以在本地网络内创建一个私有仓库

用户创建的镜像可以push到公有或者私有仓库,如果需要在另外一台机器上使用这个镜像时候,只需要从仓库上pull下来就可以了

安装 docker (要求内核 3.10以上):

ubuntu 16.04系统:

升级source列表并保证https和ca证书成功安装

sudo apt-get update

sudo apt-get install apt-transport-https ca-certificates

增加新的GPG密钥

sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D

新增或编辑source列表里的docker.list文件

sudo vim /etc/apt/sources.list.d/docker.list

deb https://apt.dockerproject.org/repo ubuntu-xenial main       #添加内容

安装linux-image-extra(额外的内核模块)

sudo apt-get install linux-image-extra-$(uname -r)

安装docker

sudo apt-get update

sudo apt-get install docker-engine

sudo service docker start

centos 7系统:

https://download.docker.com/linux/centos/7/x86_64/stable/Packages/          #docker RPM包下载路径

yum -y localinstall docker-ce-selinux-17.03.0.ce-1.el7.centos.noarch.rpm docker-ce-17.03.0.ce-1.el7.centos.x86_64.rpm

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://8ad7943c.m.daocloud.io  #进行镜像下载加速

systemctl start docker              #启动docker

systemctl status docker             #查看docker状态

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值