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.32-573.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: 0
Images: 0
Storage Driver: devicemapper
 Pool Name: docker-8:3-3016327-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.95-RHEL6 (2015-04-15)
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 2.6.32-573.el6.x86_64
Operating System: <unknown>
CPUs: 1
Total Memory: 1.826 GiB
Name: docker
ID: ZRF4:2E26:P3LZ:TK37:5HJG:5VP3:HUVQ:NSMR:J6BG:WMWO:YEDJ:MDGZ

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏张善友的专栏

Windows Server2008中的IIS7的五大特性

1、完全模块化的IIS 如果你非常熟悉流行的Apache Web server软件,那么你会知道它最大的优势就在于它的定制化,你可以把它配置为只能显示静态的...

1866
来自专栏埋名

专门为Github党打造的超级无敌Chrome插件

作为GitHub党,分享一些好用的Chrome插件,帮助增强Github功能。标题名称在Chrome插件商场搜索,即可安装对应的插件。

1023
来自专栏python3

Docker是啥?

Docker的图标代表,它托着许多集装箱。我们可以把宿主机可当做这只鲸鱼,把相互隔离的容器可看成集装箱,每个集装箱中都包含自己的应用程序。

592
来自专栏北京马哥教育

rsync同步的艺术

如果你是一位运维工程师,你很可能会面对几十台、几百台甚至上千台服务器,除了批量操作外,环境同步、数据同步也是必不可少的技能。 说到“同步”,不得不提的利器就是r...

2977
来自专栏漏斗社区

工具 | sqlmap系列(四)高级篇

SQLMAP系列终于来到了高级篇,是进阶篇的延续……,本期斗哥将带你走进sqlmap批量扫描的世界。 一.批量化扫描burp的请求日记 01.首先配置burp记...

4059
来自专栏Jerry的SAP技术分享

Netweaver和CloudFoundry里的trace开关

User parameter里只要BSPWD_USER_LEVEL 值大于5 即可在webclient UI上显示error message的technical...

1634
来自专栏Hans362 's Lab

使用Jenkins CI为Nukkit持续集成

最近搭了个Jenkins,在一番艰难困苦的研究之后,终于成功的使用Jenkins编译了一个Maven项目Nukkit。虽然过程艰辛了点,但是从长远来看还是挺方便...

762
来自专栏服务端思维

服务端开发指南与最佳实战 | 数据存储技术 | MySQL(06) 数据库安全性

数据库的安全性,即保护数据库,防止未经授权或不合法的使用而造成的数据泄漏和更改破坏。因此,保护数据库的安全性的一般方法是设置用户标识和权限控制。

733
来自专栏Python攻城狮

GitHub 系列之「团队合作利器 Branch」1.什么是分支?2.分支的常用操作3.基本的团队协作流程4.Git Flow

Git 相比于 SVN 最强大的一个地方就在于「分支」,Git 的分支操作简直不要太方便,而实际项目开发中团队合作最依赖的莫过于分支了,关于分支前面的系列也提到...

531
来自专栏walterlv - 吕毅的博客

文件被占用?系统自带的“资源监视器(resmon)”也能帮你找到占用它的真凶

发布于 2018-03-09 13:26 更新于 2018-05...

432

扫码关注云+社区