简介
docker简单可以理解为容器技术,和虚拟机有着相似的概念.但和虚拟机的实现方式全然不同.
1.docker是操作系统级别的虚拟化,而不是隔离宿主机单独实现硬件环境.
2.docker的镜像导出更为轻量,一般如vmware导出镜像后都是3~4G的大小,而docker导出一般在1G左右,具体大小和安装的功能模块有关.
3.docker可运行一个机器可运行100个或更多,而虚拟机简直无法想象.
4.真正实现轻量级的部署,运维,后期可持续.
如最近公司的某小项目部署图
如上图所示,zabbix本需要nginx,等支持才能运行,但只要集成了镜像,就可以运行为container,轻便而且方便.
2017-10-23更新
容器卷
一般的容器内部的数据改变,比如在container里运行一个ubuntu镜像,在ubuntu中创建文件夹/安装软件/更改内容,这样的对系统的存储的改变,会持久化到container,此时commit为新的image,后运行新的image为container,可以看到之前的持久化操作都保留下来了.
而mysql-server存储的数据不相同,如果不指定mysql的物理存储地址,如下:
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123 -d mysql
这样只是将name=mysql的image运行为name=mysql的container,而它存储数据库等信息,由docker默认指定物理位置,可以用docker inspect containerid
来查看详细的信息.
如果要将mysql数据库迁移,这就要用到容器卷的管理.
运行时设置数据库存储地址:
docker run --name mysql -p 3306:3306 -v /opt/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123 -d mysql
- mysql数据库迁移
- 一般的迁移,直接dump导出,然后导入
- 共享数据库文件夹,分布式,如上面运行的设置为/opt/mysql,在其他主机依然可以使用此数据库文件地址,只是要考虑网络性能.
2017-10-24更新