设为首页 收藏本站
查看: 1115|回复: 0

[经验分享] Linux容器技术和docker

[复制链接]

尚未签到

发表于 2019-2-20 12:36:33 | 显示全部楼层 |阅读模式
发展历程:
容器技术最早出现在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状态




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-674899-1-1.html 上篇帖子: docker Flannel实现跨宿主主机容器互联 下篇帖子: 几张图教你快速理解docker原理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表