Docker入门简介
Docker的概念
什么是Docker?
Docker是一个开源平台,包含:容器引擎和Docker Hub注册服务器
Docker容器引擎:可以将开发者打包他们的应用和依赖包到一个可一直的容器中,然后将其发布到任何流行的Linux机器上。
Docker Hub 注册服务器:用户可以该注册服务器上创建自己的镜像库来存储、管理和分享镜像。利用Docker,可以实现软件一次配置,处处运行
RedHat从RHEL6.5开始集成对Docker的支持。
容器与虚拟机
Docker是容器的一种,容器是一种轻量级的虚拟技术,重量级的则是虚拟机,例如VMware,VirtualBox等
容器与虚拟机的对比
容器 |
虚拟机 |
|
相同点 |
都可以在不同的主机之间迁移 都具备root权限 都可以远程控制 都有备份,回滚操作 |
|
操作系统 |
在性能上有优势,能够轻易的同时运行多个操作系统 |
可以安装任何操作系统,性能不急容器 |
优点 |
更为高效,集中。一个硬件节点可以运行数以百计的容器,非常节省资源。Qos会尽量满足,但不保证一定满足,内核由提供者升级,服务由服务器提供者管理 |
对操作系统具有绝对的权限,对系统版本和升级具有完全管理权限。具有一整套的资源:CPU,RAM和磁盘,QoS是具有保证的。每一个操作虚拟机像一个真实的物理机一样,可以实现不同的操作系统同时运行在同一个物理节点上。 |
资源管理 |
弹性的资源分配:资源可以在没有关闭容器的情况下添加,数据卷也无需重新分配大小(有些服务的容器需要重启) |
虚拟机需要重启,虚拟机里的操作系统需要处理新加入的资源,例如添加一块磁盘,则需要重新分区等 |
远程管理 |
根据操作系统的不同,会通过shell或者远程桌面进行,前提是容器内的操作系统已经启动 |
远程控制由虚拟化平台提供,可以在虚拟机启动之前连接。所以可以安装系统 |
缺点 |
对内核没有控制权限,只有容器的提供者具备升级权限。只有一个内核运行在物理节点上,几乎不能实现不同的操作系统混合。容器提供者一般仅提供少数的几款操作系统 |
每一台虚拟机具有更大的负载,耗费更多的资源,用于需要全权维护和管理。一台物理机上能够运行的虚拟机也非常有限 |
配置 |
快速,秒级即可准备好,由容器提供者处理 |
配置时间长,从几分钟到几小时,具体取决于操作系统,需要自行安装操作系统 |
启动时间 |
秒级 |
分钟级 |
硬盘使用 |
MB |
GB |
性能 |
接近原生态 |
若于原生态 |
系统支持量 |
单机支持上千个容器 |
一般不多于几十个 |
Docker的应用场景
Docker几种典型的应用场景
- 加速本地开发,通过Docker能够快速搭建好开发和运行环境,并且该环境可以直接传递给测试和产品部署
- 自动打包和部署应用
- 创建轻量、私有的PaaS环境
- 自动化测试和持续集成/部署
- 部署并扩展Web应用、数据库和后端服务器
- 创建安全沙盒子
- 轻量级桌面虚拟化
Docker的组件
Docker采用的是C/S架构
Docker客户端,即Docker可执行程序,可以通过命令和API的形式与Docker守护程序进行通信,Docker守护程序提供Docker服务
Docker包含三大核心组件:镜像、容器和库
镜像:一个只读的静态模板。保存着容器需要的环境和应用的执行代码,可以把镜像看成容器的代码。当代码运行起来后就成了容器。镜像采用分层机制,每个镜像都是只读的,但是可以将写数据的层通过联合文件系统附加在原有镜像之上,这种增量式修改使得镜像非常容易存储、传输和更新。
容器:是一个运行时环境,它是一个镜像的运行状态,相对于静态的镜像而言。容器是镜像执行时的动态表现。
库:Docker采用注册服务器来存储和共享用户的镜像,库是某个特定用户存储镜像的目录。
AUFS
Docker利用AUFS来实现对容器的快速更新。
AUFS是一种支持将不同目录挂载到同一个虚拟文件系统下的文件系统,支持对每个目录的读写权限管理。另外,AUFS具有层的概念,每一次修改都是在已有的只写层进行增量修改,修改内容将形成新的文件层,而不影响原有层。
Docker的安装
安装环境:
内核版本
[root@docker ~]# uname -r
2.6.-.el6.x86_64
[root@docker ~]#
系统版本
[root@docker ~]# cat /etc/redhat-release
CentOS release 6.7 (Final)
[root@docker ~]#
注意:如果使用RedHat linux或者Centos linux ,需要时6.5以上的版本以及内核版本在2.6.32-431以上
安装EPEL的命令
rpm -Uvh http://mirror.math.princeton.edu/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
安装Docker
yum install docker-io –y
启动Docker后台
./etc/init.d/docker start
确认Doocker安装成功
[root@docker ~]# docker info
Containers:
Images:
Storage Driver: devicemapper
Pool Name: docker-:--pool
Pool Blocksize: 65.54 kB
Backing Filesystem: extfs
Data file: /dev/loop0
Metadata file: /dev/loop1
Data Space Used: 305.7 MB
Data Space Total: 107.4 GB
Data Space Available: 78.07 GB
Metadata Space Used: 729.1 kB
Metadata Space Total: 2.147 GB
Metadata Space Available: 2.147 GB
Udev Sync Supported: true
Deferred Removal Enabled: false
Data loop file: /var/lib/docker/devicemapper/devicemapper/data
Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
Library Version: 1.02.-RHEL6 (--)
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 2.6.-.el6.x86_64
Operating System: <unknown>
CPUs:
Total Memory: 1.826 GiB
Name: docker
ID: ZRF4:2E26:P3LZ:TK37:5HJG:5VP3:HUVQ:NSMR:J6BG:WMWO:YEDJ:MDGZ
Docker入门简介的更多相关文章
- docker入门——简介
从这里起航 本系列有感于<第一本Docker书>,当我拿到这本书时感觉如获至宝. 为了培养自己对docker的兴趣,不断鞭策自己,我决定开始写这个系列的博客——<站在蓝鲸的背上思考& ...
- Docker入门简介(一)
Docker 介绍 Docker是Docker.lnc公司开源的一个基于LXC技术智商构建的Container容器引擎,源代码托管在GitHub上,基于Go语言并遵从Apache2.0协议开源. Do ...
- Docker入门(一):简介
这个<Docker入门>系列文档,是我根据Docker官网(https://docs.docker.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家 ...
- Docker入门系列1:简介
可以实现快速部署. 比如一台 16 核 32G 内存的虚拟机上,需要跑 500+ 个用户的应用(每个应用的功能可以认为是一个网站 + 一系列的 RESTful API),有两个事情很重要: 资源隔离: ...
- redis哨兵集群、docker入门
redis-sentinel主从复制高可用 Redis-Sentinel Redis-Sentinel是redis官方推荐的高可用性解决方案,当用redis作master-slave的高可用时,如果m ...
- Docker入门(七):部署app
这个<Docker入门系列>文档,是根据Docker官网(https://docs.docker.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指 ...
- Docker入门(六):Stacks
这个<Docker入门系列>文档,是根据Docker官网(https://docs.docker.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指 ...
- Docker入门(五):Swarms
这个<Docker入门系列>文档,是根据Docker官网(https://docs.docker.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指 ...
- Docker入门(四):服务(Services)
这个<Docker入门系列>文档,是根据Docker官网(https://docs.docker.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指 ...
随机推荐
- tomcat组成以及工作原理
1 - Tomcat Server的组成部分 1.1 - Server A Server element represents the entire Catalina servlet Containe ...
- Spring快速入门
什么是Spring Spring是分层的JavaSE/EE full-stack(一站式) 轻量级开源框架 分层 SUN提供的EE的三层结构:web层.业务层.数据访问层(持久层/集成层) Strut ...
- iOS __weak __strong WeakSelf StrongSelf
在block中常常会用到self,可是会造成循环引用.这时候就需要这样来解决这个问题: #define WeakSelf __weak typeof(self) weakSelf = self #de ...
- 归一化交叉相关Normalization cross correlation (NCC)
归一化交叉相关Normalization cross correlation (NCC) 相关系数,图像匹配 NCC正如其名字,是用来描述两个目标的相关程度的,也就是说可以用来刻画目标间的相似性.一般 ...
- EF 5 最佳实践白皮书
Performance Considerations for Entity Framework 5 By David Obando, Eric Dettinger and others Publish ...
- arcmap配置的mxd慢的问题
http://www.360doc.com/content/13/0220/09/3046928_266688511.shtml
- mysql刷日志的两个参数
innodb_flush_log_at_trx_commit 0:每秒 ----log---disk1:事物提交 ---log ---disk2:事物提交---log 每秒 ---disk sync_ ...
- html()、text()、val()、innerHTML、value()的区分
以上的方法可用于一般的html标签(div)与input中分别进行讨论 1.html(): jQuery方法,用于一般标签中,可读写,可以获得写入html标签. 2.text(): jQuery方法, ...
- HDU 5833 Zhu and 772002(高斯消元)
题意:给n个数,从n个数中抽取x(x>=1)个数,这x个数相乘为完全平方数,求一共有多少种取法,结果模1000000007. 思路:每个数可以拆成素数相乘的形式,例如: x1 2=2^1 * 3 ...
- 怎么使用CKEDITOR
出于工作需求,自己在网上找了个文本编辑器控件, 网址是http://ckeditor.com/ 怎么使用? 先插入脚本<script type="text/javascript&quo ...