簡介
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更新