公司的服务都使用Docker部署,虽然这块和我关系不大,但是我在测试环境启动时,老是会报错,所以我打算学习一下基本的Docker知识,方便自己在测试环境调试。
什么是Docker?
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
用网上大家流传的一个比喻就是:
Docker提供类似于集装箱的机制。
将你要运行的应用放到一个docker容器(容器里配置该应用运行的环境)里面,他就可以到处运行,不会出现各种环境冲突的问题。
经过一下午的学习,我对Docker的理解是:一个轻量级的虚拟机。
虚拟机大家都使用过,他只依赖与系统的硬件,可以在windows里面创建一个macos或者linux,但是他对资源的消耗/浪费非常严重,而Docker的隔离程度没有虚拟机那么高,同时共享操作系统,对资源的利用率更好。
现在有一个linux机器:
使用虚拟机可以获得:x个A OS,y 个BOS,z个COS。。。
使用Docker可以获得h 个 linux。
而h >> x + y + z;
Docker的应用场景
Web 应用的自动化打包和发布。
自动化测试和持续集成、发布。
在服务型环境中部署和调整数据库或其他的后台应用。
从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。
docker的几个概念
- docker images :镜像,用于创建容器的模板。
- docker container : 容器,运营应用
- docker registry : 仓库,保存image。
docker的安装
安装过程比较简单,这里不再叙述,按照官方网站或者runoob docker ubuntu 安装 安装即可。
安装完成后可以通过下面的命令检验是否安装成功。
1 | docker version |
image文件
Docker 把应用程序及其依赖,打包在 image 文件里面。以image文件为模板,可以生成一个Docker容器。
Image 相关的命令及作用如下:
1 | //列出所有镜像 |
container文件
根据image文件生成的docker容器也是一个文件,相关的docker命令如下:
1 | //创建一个新的容器 |
在应用层面的docker并不难,这也说明了docker这个项目的优秀,让我这种一知半解的人也可以使用。
由于我也只看了一下午,对docker也没有太多深入理解,但是跟着教程做了一遍之后,也可以对公司测试环境的一些脚本进行调试了。基本满足当前使用了。
Docker后续学习资料
阮一峰老师的docker教程点击这里
runoob的教程,这个强烈推荐一下,按照教程可以对所有的docker命令进行一次自己的尝试,更加方便理解。点击这里
docker中文官网点击这里
docker官方博客点击这里
完。
ChangeLog
2018-10-17 完成以上皆为个人所思所得,如有错误欢迎评论区指正。
欢迎转载,烦请署名并保留原文链接。
更多学习笔记见个人博客——>呼延十