Docker火了有一段时间了,越来越多的公司使用Docker部署环境,作为测试,了解一些这方面的知识也越来越有必要。
可以配合Kubernetes(简称k8s)一起来学习。
诞生背景
一款产品从开发到上线,从操作系统,到运行环境,再到应用配置。 作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网公司都不得不面对的问题, 特别是各种版本的迭代之后,不同版本环境的兼容,对运维人员都是考验。 Docker之所以发展如此迅速,也是因为它对此给出了一个标准化的解决方案。
环境配置如此麻烦,换一台机器,就要重来一次,费力费时。 很多人想到,能不能从根本上解决问题,软件可以带环境安装? 也就是说,安装的时候,把原始环境一模一样地复制过来。 开发人员利用 Docker 可以消除协作编码时“在我的机器上可正常工作”的问题。
开发需要清楚的告诉运维部署团队,用的全部配置文件+所有软件环境。 不过,即便如此,仍然常常发生部署失败的状况。 Docker镜像的设计,使得Docker得以打破过去"程序即应用" 的观念。 透过镜像将作业系统核心除外,运作应用程式所需要的系统环境, 由下而上打包,达到应用程序跨平台间的无缝接轨运作。
Docker简介
Docker是一个开源软件项目,用go语言开发的。
Docker可以让开发者打包他们的应用以及所有的依赖包到一个轻量级、可移植的容器中
Docker打包好了容器,可以发布到任何流行的Linux机器上,也可以实现虚拟化
容器是完全使用沙箱机制,相互之间不会有任何接口
Docker容器性能开销极低(关键优势)
Docker从17.03版本之后分为CE(社区版)和EE(企业版),一般用社区版就可以
Docker使用C/S(客户端-服务器)架构模式,使用远程API来管理和创建Docker容器
Docker与传统VM的对比
特性 | Docker | 传统VM |
启动速度 | 秒级 | 分钟级 |
计算能力损耗 | 几乎无 | 损耗50%左右 |
性能 | 接近原生 | 弱于 |
系统支持量(单机) | 上千个 | 几十个 |
隔离性 | 资源限制 | 完全隔离 |
Docker 拥有的众多优势与操作系统虚拟化的特点是分不开的:
- 传统虚拟机需要有额外的虚拟机管理程序和虚拟机操作系统层
- 而 Docker 容器是直接在操作系统层面之上实现的虚拟化
Docker在测试中的应用场景
1.自动化测试的持续集成、发布
2.使用Docker实现开发人员的开发环境、测试人员的测试环境、运维人员的生产环境的一致性。
大家在工作中肯定经常听到程序说过‘我本地是好的啊,咋到你这出问题了?’
Docker技术就可以解决这一问题。
docker组成
镜像:可以理解为python里面类的概念,是静态的,一般不会直接使用
容器:是通过镜像创建的,相当于python中实例的概念,是动态的,可访问
仓库:存放镜像的地儿
宿主机:docker安装在哪个机器上,那个机器就是宿主机
部署docker
我是买了一个腾讯云服务器用来学习和练习,大家也可以用虚拟机进行练习。
用xshell连接云服务器
官网下载有些麻烦,大家可以直接公众号后台回复‘xshell’,获取Xshell7的安装包,傻瓜式安装就好了。
点击左上角新建会话,把云服务器的ip地址填进去,端口一般是默认的22,然后输入用户名/密码就连接成功了。
接下来开始部署docker
系统:centos 8.0
1.查看内核版本
uname -r
注意:内核版本需要不小于3.10,不然docker起不来
2.安装docker依赖包
yum install -y yum-utils lvm2 device-mapper-persistent-data
我这之前已经安装好了。
3.配置docker源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
4.安装docker
查看所有仓库中所有docker版本
docter安装:yum -y install docker-ce
时间略长,等待完成即可。
5.启动docker
service docker start
6.验证下
执行:sudo docker run hello-world
这就说明我们的docker部署好了。很快很easy。
下一篇再介绍docker常用的指令、镜像的创建与操作、容器的创建与操作等内容(我还不会,学完再写)