设为首页 收藏本站
云服务器等爆品抢先购,低至4.2元/月
查看: 1363|回复: 0

[经验分享] Docker简介

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2017-3-23 14:59:05 | 显示全部楼层 |阅读模式
什么是Docker
正所谓Docker的英文本意为“搬运工”,所以在我们的世界里,可以理解为Docker搬运的是装满任意类型的APP的集装箱,开发者可以通过Docker将APP变成一种标准化的、可移动植的、自动管理的组件。它用一种新的方式实现了轻量级的虚拟机,专业术语成为应用容器(Application Container)
Docker的优势:
1、利用率高
              ·Docker对系统资源的利用率很高,一台主机可以同时运行数千个Docker容器
2、可以快速的交付应用程序
·开发者使用一个标准的image来构建开发容器,开发完成之后,系统管理员就可以使用这种容器来部署代码
·Docker可以快速的创建容器,快速的迭代应用程序,并让整个过程可见,使团队中的其他成员更容易理解应用程序是如何创建和工作的
·Docker容器很轻,很快,启动时间堪称秒级,节约了开发、测试、部署的时间
3、更容易部署和扩展
·Docker容器几乎可以在所有的环境中运行,如物理机、虚拟机、云主机、个人PC、服务器等
·Docker容器兼容很多的平台,这样就可以吧一个应用程序从一个平台迁移到另一个
4、效率更高
·Docker容器不需要hypervisor,因为他是内核级的虚拟化
5、更简单的管理
·通常只需要小小的改变就可以替代以往巨型和大量的更新工作

Docker的常用案例:
u  自动打包和部署应用
u  创建轻量、私有的PaaS环境
u  自动化测试和持续集成/部署
u  部署并扩展Web应用、数据库和后端服务器


Docker的体系结构
Docker使用C/S架构,doceker daemon作为server端接受clinet的请求,并处理(创建、运行、分发容器),他们可以运行在一个机器上,也通过socket或者RESTful API通信
u  Docker守护进程(Docker daemon
Docker守护进程运行在一台主机上,用户并不直接和守护进程进行交互,而是通过Docker客户端间接可其通信
u  Docker客户端(Docker client
Docker客户端其实是docker的二进制程序,是用户与Docker交互方式,他接收用户指令并且与背后的Docker守护进程通信。

Docker镜像 -Docker images
Docker镜像是Docker容器运行时的只读模板,镜像可以用来创建Docker容器,每一个镜像用一系列的层(layers)组成
Docker仓库 -Docker registeries
Docker仓库用来保存镜像,可以理解为代码控制中的代码仓库,它分为公开仓库(public)和私有仓库(private)两种形式。
Docker容器 -Docker containers
容器是用来运行应用的,一个Docker容器包含可所有某个应用的运行所需的环境,每一个Docker容器都是从Docker镜像创建的,Docker容器可以实现运行、开始、停止、移动和删除。

Docker底层技术
pid namespace
不同用户的进程就是通过pidnamespace隔离开的,且不同 namespace 中可以有相同PID。
net namespace
有了 pid namespace, 每个namespace中的pid能够相互隔离,但是网络端口还是共享host的端口。网络隔离是通过netnamespace实现的,每个net namespace有独立的 network devices, IP addresses, IP routing tables, /proc/net 目录。这样每个container的网络就能隔离开来。LXC在此基础上有5种网络类型,docker默认采用veth的方式将container中的虚拟网卡同host上的一个docker bridge连接在一起。
ipc namespace
container中进程交互还是采用linux常见的进程间交互方法(interprocess communication - IPC), 包括常见的信号量、消息队列和共享内存。然而同VM不同,container 的进程间交互实际上还是host上具有相同pid namespace中的进程间交互,因此需要在IPC资源申请时加入namespace信息 - 每个IPC资源有一个唯一的 32bit ID。
mnt namespace
类似chroot,将一个进程放到一个特定的目录执行。mnt namespace允许不同namespace的进程看到的文件结构不同,这样每个 namespace 中的进程所看到的文件目录就被隔离开了。同chroot不同,每个namespace中的container在/proc/mounts的信息只包含所在namespace的mount point。
uts namespace
UTS("UNIX Time-sharing System") namespace允许每个container拥有独立的hostname和domain name,使其在网络上可以被视作一个独立的节点而非Host上的一个进程。
user namespace
每个container可以有不同的 user 和 group id, 也就是说可以以container内部的用户在container内部执行程序而非Host上的用户。



运维网声明 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-354218-1-1.html 上篇帖子: Docker中安装oracle 11.2.0.4 下篇帖子: docker 容器和宿主机相互拷贝数据
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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