簡(jiǎn)介
docker簡(jiǎn)單可以理解為容器技術(shù),和虛擬機(jī)有著相似的概念.但和虛擬機(jī)的實(shí)現(xiàn)方式全然不同.
1.docker是操作系統(tǒng)級(jí)別的虛擬化,而不是隔離宿主機(jī)單獨(dú)實(shí)現(xiàn)硬件環(huán)境.
2.docker的鏡像導(dǎo)出更為輕量,一般如vmware導(dǎo)出鏡像后都是3~4G的大小,而docker導(dǎo)出一般在1G左右,具體大小和安裝的功能模塊有關(guān).
3.docker可運(yùn)行一個(gè)機(jī)器可運(yùn)行100個(gè)或更多,而虛擬機(jī)簡(jiǎn)直無法想象.
4.真正實(shí)現(xiàn)輕量級(jí)的部署,運(yùn)維,后期可持續(xù).
如最近公司的某小項(xiàng)目部署圖
如上圖所示,zabbix本需要nginx,等支持才能運(yùn)行,但只要集成了鏡像,就可以運(yùn)行為container,輕便而且方便.
2017-10-23更新
容器卷
一般的容器內(nèi)部的數(shù)據(jù)改變,比如在container里運(yùn)行一個(gè)ubuntu鏡像,在ubuntu中創(chuàng)建文件夾/安裝軟件/更改內(nèi)容,這樣的對(duì)系統(tǒng)的存儲(chǔ)的改變,會(huì)持久化到container,此時(shí)commit為新的image,后運(yùn)行新的image為container,可以看到之前的持久化操作都保留下來了.
而mysql-server存儲(chǔ)的數(shù)據(jù)不相同,如果不指定mysql的物理存儲(chǔ)地址,如下:
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123 -d mysql
這樣只是將name=mysql的image運(yùn)行為name=mysql的container,而它存儲(chǔ)數(shù)據(jù)庫等信息,由docker默認(rèn)指定物理位置,可以用docker inspect containerid
來查看詳細(xì)的信息.
如果要將mysql數(shù)據(jù)庫遷移,這就要用到容器卷的管理.
運(yùn)行時(shí)設(shè)置數(shù)據(jù)庫存儲(chǔ)地址:
docker run --name mysql -p 3306:3306 -v /opt/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123 -d mysql
- mysql數(shù)據(jù)庫遷移
- 一般的遷移,直接dump導(dǎo)出,然后導(dǎo)入
- 共享數(shù)據(jù)庫文件夾,分布式,如上面運(yùn)行的設(shè)置為/opt/mysql,在其他主機(jī)依然可以使用此數(shù)據(jù)庫文件地址,只是要考慮網(wǎng)絡(luò)性能.
2017-10-24更新