文档章节

Docker简介

超人学院
 超人学院
发布于 2015/02/11 15:04
字数 1529
阅读 39
收藏 3

Docker简介

Docker是DotCloud开源的、可以将任何应用包装在Linux container中运行的工具。2013年3月发布首个版本,当前最新版本为1.3。Docker基于Go语言开发,代码托管在Github上,目前超过10000次commit。基于Docker的沙箱环境可以实现轻型隔离,多个容器间不会相互影响;Docker可以自动化打包和部署任何应用,方便地创建一个轻量级私有PaaS云,也可以用于搭建开发测试环境以及部署可扩展的web应用等。

Docker vs VM

从下图可以看出,VM是一个运行在宿主机之上的完整的操作系统,VM运行自身操作系统会占用较多的CPU、内存、硬盘资源。Docker不同于VM,只包含应用程序以及依赖库,基于libcontainer运行在宿主机上,并处于一个隔离的环境中,这使得Docker更加轻量高效,启动容器只需几秒钟之内完成。由于Docker轻量、资源占用少,使得Docker可以轻易的应用到构建标准化的应用中。但Docker目前还不够完善,比如隔离效果不如VM,共享宿主机操作系统的一些基础库等;网络配置功能相对简单,主要以桥接方式为主;查看日志也不够方便灵活。

docker与vm比较

另外,IBM发表了一篇关于虚拟机和Linux container性能对比的论文,论文中实际测试了虚拟机和Linux container在CPU、内存、存储IO以及网络的负载情况,结果显示Docker容器本身几乎没有什么开销,但是使用AUFS会一定的性能损耗,不如使用Docker Volume,Docker的NAT在较高网络数据传输中会引入较大的工作负载,带来额外的开销。不过container的性能与native相差不多,各方面的性能都一般等于或者优于虚拟机。Container和虚拟机在IO密集的应用中都需要调整优化以更好的支持IO操作,两者在IO密集型的应用中都应该谨慎使用。

Docker Component

docker组成

Docker是CS架构,主要由下面三部分组成:

  • Docker daemon: 运行在宿主机上,Docker守护进程,用户通过Docker client(Docker命令)与Docker daemon交互

  • Docker client: Docker 命令行工具,是用户使用Docker的主要方式,Docker client与Docker daemon通信并将结果返回给用户,Docker client也可以通过socket或者RESTful api访问远程的Docker daemon

  • Docker hub/registry: 共享和管理Docker镜像,用户可以上传或者下载上面的镜像,官方地址为https://registry.hub.docker.com/,也可以搭建自己私有的Docker registry

了解了Docker的组成,再来了解一下Docker的两个主要概念:

  • Docker image:镜像是只读的,镜像中包含有需要运行的文件。镜像用来创建container,一个镜像可以运行多个container;镜像可以通过Dockerfile创建,也可以从Docker hub/registry上下载。

  • Docker container:容器是Docker的运行组件,启动一个镜像就是一个容器,容器是一个隔离环境,多个容器之间不会相互影响,保证容器中的程序运行在一个相对安全的环境中。

Docker网络

Docker的网络功能相对简单,没有过多复杂的配置,Docker默认使用birdge桥接方式与容器通信,启动Docker后,宿主机上会产生docker0这样一个虚拟网络接口, docker0不是一个普通的网络接口, 它是一个虚拟的以太网桥,可以为绑定到docker0上面的网络接口自动转发数据包,这样可以使容器与宿主机之间相互通信。每次Docker创建一个容器,会产生一对虚拟接口,在宿主机上执行ifconfig,会发现多了一个类似veth****这样的网络接口,它会绑定到docker0上,由于所有容器都绑定到docker0上,容器之间也就可以通信。

在宿主机上执行ifconfig,会看到docker0这个网络接口, 启动一个container,再次执行ifconfig, 会有一个类似veth****的interface,每个container的缺省路由是宿主机上docker0的ip,在container中执行netstat -r可以看到如下图所示内容:
container路由

容器中的默认网关跟docker0的地址是一样的:
docker0
当容器退出之后,veth*虚拟接口也会被销毁。

除bridge方式,Docker还支持host、container、none三种网络通信方式,使用其它通信方式,只要在Docker启动时,指定--net参数即可,比如:

docker run -i -t  --net=host ubuntu /bin/bash

host方式可以让容器无需创建自己的网络协议栈,而直接访问宿主机的网络接口,在容器中执行ip addr会发现与宿主机的网络配置是一样的,host方式让容器直接使用宿主机的网络接口,传输数据的效率会更加高效,避免bridge方式带来的额外开销,但是这种方式也可以让容器访问宿主机的D-bus等网络服务,可能会带来意想不到的安全问题,应谨慎使用host方式;container方式可以让容器共享一个已经存在容易的网络配置; none方式不会对容器的网络做任务配置,需要用户自己去定制。

© 著作权归作者所有

共有 人打赏支持
超人学院
粉丝 110
博文 335
码字总数 388917
作品 0
昌平
CTO(技术副总裁)
私信 提问
下一代工具集 BuildKit 大揭秘,Docker 专家带你了解背后的点点滴滴

本文首发自“Docker公司”公众号(ID:docker-cn) 编译丨小东 每周一、三、五 与您不见不散! 上周,我们在 Docker 总部成功地举办了 Docker San Francisco 的分会活动。本次活动主要聚焦在...

docker公司
08/06
0
0
云计算基础之Docker是什么?

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/baidu_34122324/article/details/84206498 文章目录 1. 百科简介 2. 应用场景 3. 优点 1. 百科简介 Docker 是...

ashTake
11/18
0
0
Docker进阶与实战_帝都客_ pdf扫描版_完整版_资源免费下载

《Docker进阶与实战》由机械工业出版社出版。 PDF下载地址 :http://www.diduker.com/html/4640.html PDF相关截图 : 编辑推荐 作者简介 华为Docker实践小组,致力于容器技术探索,结合华为C...

909636801
07/18
0
0
DevOps与微服务 ▎时速云Docker&Kubernetes技术沙龙第四期

时速云是国内领先的容器云平台与解决方案提供商,自成立之日起,就根植于技术社区,致力于推动以Docker为代表的容器技术在国内的发展。迄今为止我们已在北京成功举办三期Docker&Kubernetes技...

时速云
2016/06/13
207
0
深圳 Docker Meetup

三年光阴,如白马过隙。三年里,随着 Docker 引擎的升级,Docker Native(原生)在存储、集群、安全等方面的性能得到极大的提升。Docker Native 是包括 Docker Engine、Docker Swarm、Docke...

DaoCloud
2016/03/22
262
0

没有更多内容

加载失败,请刷新页面

加载更多

Ubuntu16.04下安装docker

[TOC] 本文开发环境为Ubuntu 16.04 LTS 64位系统,通过apt的docker官方源安装最新的Docker CE(Community Edition),即Docker社区版,是开发人员和小型团队的理想选择。 1. 开始安装 1.1 由于...

豫华商
3分钟前
0
0
使用XShell工具密钥认证登录Linux系统

如果你是一名Linux运维,那么Linux服务器的系统安全问题,可能是你要考虑的,而系统登录方式有两种,密码和密钥。哪一种更加安全呢? 无疑是后者! 这里我为大家分享用Xshell利器使用密钥的方...

dragon_tech
15分钟前
0
0
day178-2018-12-15-英语流利阅读-待学习

“真蛛奶茶”了解一下?蜘蛛也会产奶了 Lala 2018-12-15 1.今日导读 “蛋白质含量是牛奶的 4 倍,并有着更低的脂肪和含糖量”,听起来诱人又美味的并不是羊奶或豆奶,而是你可能打死都想不到...

飞鱼说编程
20分钟前
5
0
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents

场景重现 npm install --verbose 安装依赖的时,出现如下警告 强迫症患者表示不能接受 npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.4 (node_modules\fsevents):npm WARN......

taadis
24分钟前
1
0
OSChina 周六乱弹 —— 你一口我一口多咬一口是小狗

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @达尔文 :分享Roy Orbison的单曲《She's a Mystery to Me》 《She's a Mystery to Me》- Roy Orbison 手机党少年们想听歌,请使劲儿戳(这里...

小小编辑
今天
293
6

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部