最近接触docker比较多,发现这真是个好东西,而且可以看到的大趋势是,docker 的使用面会越来越广,渗透到各个 IT 技术中去。之前的教程中部署seafile、酷 Q、wordpress 等很多应用时,都用到了 docker,而且确实用起来很方便。先简单介绍下 docker。 Docker 简要原理简介人人都在说 docker,但 docker 到底是个啥?且不谈底层的资源隔离、网络隔离等基础原理,谈一下对于普通的使用者,docker 是什么样的。其实 docker 从表现上来说很像虚拟机(vm 虚拟机等等),它也是在一台母机上创建出来其他子系统,运行的子系统就叫 docker 容器。如下图所示
虚拟机与 docker 最大的区别在于,虚拟机是通过虚拟化软件(Vmware,Hyper-V)在母机上虚拟出硬件资源供上层子系统(虚拟机)使用;而 docker 容器是通过 docker隔离划分出资源给上层 docker 容器使用。
Docker 特点Docker 与虚拟机相比有以下特点:
| Docker 容器 | Vm 虚拟机 |
启动速度 | 快,以秒计 | 慢,十几秒到几十秒不等 |
空间占用 | 轻量,docker 镜像最小的只有 5M,普通物理主机能运行几百个容器 | 重量,操作系统一般都是 GB 级,普通物理主机只能运行几个虚拟机 |
可移植性 | 高。镜像小方便迁移;主流平台支持 docker;有公共镜像仓库 | 不易移植,系统文件可能会增长到十几 G |
版本控制 | 有,可以随时回滚 | 有快照功能 |
资源隔离 | 安全资源隔离 | 底层虚拟化/完全隔离 |
docker 应用场景Docker 的使用场景也很多,比如做云计算中的 paas 层,做 DEVOPS、CICD,快速部署快速发布,这都是一些企业级的应用场景。我介绍下对于个人开发者有哪些典型的使用场景。
1 快速部署、简化配置
大家可能已经注意到很多应用都渐渐支持 docker 部署了,如 wordpress、seafile、酷 Q 等等常用的应用程序。在没用 docker 之前,部署需要很繁琐的步骤,还容易出错。如安装配置数据库、安装插件、配置文件、配置网络等。但是使用 docker 后,基本上只需要下载一个 docker 镜像,一行运行 docker 的命令就好了,简直快到飞起。
2 应用迁移
Docker 是将应用和它的运行环境一起封装为一个镜像,这个镜像更新很简单,也能很方便的部署到其他环境。如果你需要经常更换 vps,通过 docker 去迁移应用是个很不错的选择。
3 应用隔离
打个比方,如果你在一台 vps 上需要同时运行两个 python 应用,一个只支持 python2.7,一个支持 python3.4,怎么办呢?通过 docker 运行两个容器,一个封装 python2.7,一个封装 python3.4 就可以了。这也是一个很不错的特性
docker 环境部署Docker 支持部署在 macOS、win10、CentOS、ubuntu、Debian 等主流操作系统上。分为企业版(EE)和社区版(CE),其中社区版又分 edge 和 stable 版。Edge 和 stable 的区别在于 edge 每个月更新一次,stable 每个季度更新一次。企业版每半年更新一次。下面是社区版的安装教程
https://docs.docker.com/install/linux/docker-ce/centos/
下面是之前用 docker 部署应用的教程,可以体验下