公司的服务都使用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;
安装过程比较简单,这里不再叙述,按照官方网站或者runoob docker ubuntu 安装 安装即可。
安装完成后可以通过下面的命令检验是否安装成功。
docker version
Docker 把应用程序及其依赖,打包在 image 文件里面。以image文件为模板,可以生成一个Docker容器。
Image 相关的命令及作用如下:
//列出所有镜像
images
//删除镜像
rmi
//设置镜像标签
tag
//构建一个新的镜像
build
//查看镜像的创建历史
history
//把镜像保存成tar
save
//拉取仓库里的image文件
docker pull
根据image文件生成的docker容器也是一个文件,相关的docker命令如下:
//创建一个新的容器
docker run
//启动/停止/重启一个容器
docker start/stop/restart
//杀掉运行中的容器
docker kill
//删除容器
docker rm
//查看运行中的容器
docker ps
//查看运行中容器的log
docker logs
在应用层面的docker并不难,这也说明了docker这个项目的优秀,让我这种一知半解的人也可以使用。
由于我也只看了一下午,对docker也没有太多深入理解,但是跟着教程做了一遍之后,也可以对公司测试环境的一些脚本进行调试了。基本满足当前使用了。
完。
2018-10-17 完成
以上皆为个人所思所得,如有错误欢迎评论区指正。
欢迎转载,烦请署名并保留原文链接。
联系邮箱:huyanshi2580@gmail.com