什么是Docker?
Docker是一种Linux容器技术,一种高效、敏捷、和轻量级的容器解决方案,并且支持在多种主流平台(PaaS)和本地部署。Docker是基于Go语言实现的云kai源项目,诞生于2013年,最初发起者是DotCloud公司,后来改名为DockerInc,之后专注于Docker相关技术和产品的kai发。Docker项目目前已经加入了Linux基金会,遵循Apache2.0kai源协议,全部kai源dai码均在https://github.com/docker上进行相关维护,官网地址为:https://www.docker.com/,有相关文档可以参考,现在docker与openstack同为最受欢迎的云计算kai源项目。
- docker的Logo设计为蓝色鲸鱼,拖着许多集装箱。docker的构想思想是要实现“Build,ShipandRunAnyApp,Anywhere”,即通过对应用的封装(Packaging)、分发(Distribution)、部署(Deployment)、运行(Runtime)生命周期进行管理,达到应用组件“一次封装,到处运行”的目的。这里的应用组件,既可以是一个Web应用、一个编译环境,也可以是一套数据库平台服务,甚至是一个操作系统或集群。
- 基于Linux平台上的多项kai源技术,Docker提供了高效、敏捷和轻量级的容器方案,并支持部署到本地环境和多种主流云平台。可以说,Docker首次为应用的kai发、运行和部署提供了“一站式”的实用解决方案。
为何要使用docker?
1,Docker容器虚拟化的好处
- Docker项目的发起人和Docker公司CTOSolomonHykes曾认为,Docker在正确的地点、正确的时间顺应了正确的趋势——如何正确地构建应用。
- 在云时dai,kai发者创建的应用必须要能很方便地在网络上传播,也就是说应用必须脱离底层物理硬件的限制;同时必须是“任何时间、任何地点”可获取的。因此,kai发者需要一种新型的创建分布式应用程序的方式,快速分发和部署,这正是Docker所能够提供的最大优势。
- 举个简单的例子,假设用户试图基于最常见的LAMP(Linux+Apache+MySQL+PHP)组合来构建一个网站。按照传统的做法,首先,需要安装Apache、MySQL和PHP以及它们各自运行所依赖的环境;之后分别对它们进行配置(包括创建合适的用户、配置参数等);经过大量的操作后,还需要进行功能测试,看是否工作正常;如果不正常,则进行调试追踪,意味着更多的时间dai价和不可控的风险。可以想象,如果应用数目变多,事情会变得更加难以处理。
- 更为可怕的是,一旦需要服务器迁移(例如从亚马逊云迁移到其他云),往往需要对每个应用都进行重新部署和调试。这些琐碎而无趣的“体力活”,极大地降低了工作效率。究其根源,是这些应用直接运行在底层操作系统上,无法保证同一份应用在不同的环境中行为一致。
- 而Docker提供了一种更为聪明的方式,通过容器来打包应用,解耦应用和运行平台。意味着迁移的时候,只需要在新的服务器上启动需要的容器就可以了,无论新旧服务器是否是同一类型的平台。这无疑将节约大量的宝贵时间,并降低部署过程出现问题的风险。
2,Docker在kai发和运维中的优势:
- 更快速的交付和部署:使用Docker,kai发人员可以使用镜像来快速构建一套标准的kai发环境;kai发完成之后,测试和运维人员可以直接使用完全相同环境来部署dai码。只要kai发测试过的dai码,就可以确保在生产环境无缝运行。Docker可以快速创建和删除容器,实现快速迭dai,大量节约kai发、测试、部署的时间。并且,整个过程全程可见,使团队更容易理解应用的创建和工作过程。
- 更高效的资源利用:Docker容器的运行不需要额外的虚拟化管理程序(VirtualMachineManager,VMM,以及Hypervisor)支持,它是内核级的虚拟化,可以实现更高的性能,同时对资源的额外需求很低。跟传统虚拟机方式相比,要提高一到两个数量级。
- 更轻松的迁移和扩展:Docker容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等,同时支持主流的操作系统发行版本。这种兼容性让用户可以在不同平台之间轻松地迁移应用。
- 更简单的更新管理:使用Dockerfile,只需要小小的配置修改,就可以替dai以往大量的更新工作。并且所有修改都以增量的方式被分发和更新,从而实现自动化并且高效的容器管理。
3,Docker与虚拟机比较:
- 作为一种轻量级的虚拟化方式,Docker在运行应用上与传统的虚拟机方式相比具有显著优势:
Docker容器很快,启动和停止可以在秒级实现,而传统的虚拟机方式需要数分钟。
Docker容器对系统资源需求很少,一台主机上可以同时运行数千个Docker容器(在IBM服务器上已经实现了同时运行10K量级的容器实例)。
Docker通过类似Git设计理念的操作来方便用户获取、分发和更新应用镜像,存储复用,增量更新。
Docker通过Dockerfile支持灵活的自动化创建和部署机制,提高工作效率,使流程标准化。
Docker容器除了运行其中应用外,基本不消耗额外的系统资源,保证应用性能的同时,尽量减小系统kai销。传统虚拟机方式运行N个不同的应用就要起N个虚拟机(每个虚拟机需要单独分配独占的内存、磁盘等资源),而Docker只需要启动N个隔离的“很薄的”容器,并将应用放进容器内即可。应用获得的是接近原生的运行性能。
当然,在隔离性方面,传统的虚拟机方式提供的是相对封闭的隔离。但这并不意味着Docker就不安全,Docker利用Linux系统上的多种防护技术实现了严格的隔离可靠性,并且可以整合众多安全工具。从1.3.0版本kai始,Docker重点改善了容器的安全控制和镜像的安全机制,极大提高了使用Docker的安全性。在已知的大规模应用中,目前尚未出现值得担忧的安全隐患。
Docker容器技术与传统虚拟机技术的特性比较
docker官网:https://www.docker.com/
docker官方文档:https://docs.docker.com/
- Docker值得关注的特性:
文件系统隔离:每个进程容器运行在一个完全独立的根文件系统里。
资源隔离:系统资源,像CPU和内存等可以分配到不同的容器中,使用cgroup。网络隔离:每个进程容器运行在自己的网络空间,虚拟接口和IP地址。
日志记录:Docker将会收集和记录每个进程容器的标准流(stdout/stderr/stdin),用于实时检索或批量检索。
变更管理:容器文件系统的变更可以提交到新的映像中,并可重复使用以创建更多的容器。无需使用模板或手动配置。
交互式shell:Docker可以分配一个虚拟终端并关联到任何容器的标准输入上
在安装docker之前,再说一点,docker现在有两个版本,一个叫做docker-EE企业版,收费的一个叫docker-CE社区版,免费版,其实两个版本并没有太大的偏差,不一样的是docker公司会提供后续的官方的技术支持等服务,对于我们来说,肯定用社区办的多,我们拿来学习社区办更是可以的。
安装docker内核版本要求:3.10及以上
如果是centos6版本,因为centos6默认的内核版本是2.6,想要安装docker,可以升级内核。
(1)官方安装:(我们是测试环境,所以安装的是ce)
[root@sqm-docker01 yum.repos.d]# pwd
/etc/yum.repos.d
[root@sqm-docker01 yum.repos.d]# vim dockerce.repo
[dockerce] //仓库类别
name=dockerce //仓库名称(说明)
baseurl=https://download.docker.com/linux/centos/7/x86_64/stable/ //URL访问路径
enabled=1 //启用此软件仓库
gpgcheck=0 //验证(检查)软件包的签名,0表示不检查,1表示检查
[root@sqm-docker01 yum.repos.d]# yum repolist
//查看已配置的yum仓库
//安装docekr-ce
[root@sqm-docker01 yum.repos.d]# yum -y install docker-ce
##或者直接下载docker-ce.repo文件:
[root@k8s-master ~]# cd /etc/yum.repos.d/
[root@k8s-master yum.repos.d]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@k8s-master yum.repos.d]# yum repolist
[root@k8s-master yum.repos.d]# yum -y install docker-ce
[root@k8s-master yum.repos.d]# docker –v
(2)国内阿里yun源下载docker-ce:
(1)可以编写自定义yum仓库:
阿里巴巴开源镜像站:https://opsx.alibaba.com/mirror
#找到docker-ce
URL:https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/
yum仓库内容:
(2)或者直接下载阿里的repo源:
将该文件使用wget工具下载到本地:
[root@sqm-docker01 yum.repos.d]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
查看docker-ce的可用版本:
[root@sqm-docker01 yum.repos.d]# yum install -y docker-ce-18.09.0-3.el7 docker-ce-cli-18.09.0-3.el7 containerd.io-1.2.0-3.el7
下载指定版本:
[root@sqm-docker01 yum.repos.d]# yum install -y docker-ce-18.09.0-3.el7 docker-ce-cli-18.09.0-3.el7 containerd.io-1.2.0-3.el7
- 以上三个安装包分别是:
- 安装社区版
- 提供docker客户端
- 提供运行环境
安装完启动docker,并加入开机自启:
[root@sqm-docker01 yum.repos.d]# systemctl start docker
[root@sqm-docker01 yum.repos.d]# systemctl enable docker
查看docker的运行进程:
(1)Docker命令自动补全(最小化安装的系统需要安装,如果是安装的图形化则默认自带命令补全)
[root@docker01 ~]# yum -y install bash-completion
[root@docker01 ~]# curl -L https://raw.githubusercontent.com/docker/compose/1.24.1/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose
[root@docker01 ~]# source /etc/bash_completion.d/docker-compose
(2)docker配置加速器:
道云加速器网址:https://www.daocloud.io/
登录之后会有一个火箭的图标,点击它。
根据提示重启docker服务:
[root@sunqiuming-1 ~]# systemctl daemon-reload #需要重新加载守护进程
[root@sunqiuming-1 ~]# systemctl restart docker
在完成加速器的操作之后,我们会发现/etc/多了一个文件。
[root@sunqiuming-1 ~]# cat /etc/docker/daemon.json
{"registry-mirrors": ["http://f1361db2.m.daocloud.io"]}
####也就是说,刚才的那句话,就是为了实现这个文件,添加这个网址,其实这个网址那,也是可以更改的,加速器也不只是道云一家,还有一家公司,也提供加速器服务,就是大名鼎鼎的阿里云
阿里云官网:https://www.aliyun.com/
也可以更改成这个网址,当然如果你更改之后,还需要执行reload命令,重新加载一下配置文件。
[root@sunqiuming-1 ~]# systemctl daemon-reload
[root@sunqiuming-1 ~]# systemctl restart docker
以上基本就是docker部署安装及优化的全部内容。
———————— 本文至此结束,感谢阅读 ————————
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。