Docker筆記3|掛載Mount
問題:
1.Docker容器運(yùn)行時(shí)產(chǎn)生的數(shù)據(jù),如果不通過docker commit生成新的鏡像,使得數(shù)據(jù)做為鏡像的一部分保存下來, 那么當(dāng)容器刪除后,數(shù)據(jù)就沒有了。?
2.對(duì)鏡像的修改要進(jìn)入容器很麻煩,想在服務(wù)器上直接修改
解決:實(shí)現(xiàn)容器之間的數(shù)據(jù)共享,將容器中產(chǎn)生的數(shù)據(jù)同步到本地。
指定路徑掛載:
docker run -it -v? 本地目錄:容器目錄centos /bin/bash
docker run -it -v /Users/sleepydive/Volum:/home centos /bin/bash
查看
Docker inspect id
?"Mounts": [
? ? ? ? ? ? {
? ? ? ? ? ? ? ? "Type": "bind",
? ? ? ? ? ? ? ? "Source": "/Volum",
? ? ? ? ? ? ? ? "Destination": "/home",
? ? ? ? ? ? ? ? "Mode": "",
? ? ? ? ? ? ? ? "RW": true,
? ? ? ? ? ? ? ? "Propagation": "rprivate"
? ? ? ? ? ? }
? ? ? ? ],
掛載成功
docker volume ls
DRIVER? ? VOLUME NAME
local ? ? 26796237e9f9ea14f8b780b43d2b85180bf787afd908775df69e05562f33e0f2
這是匿名掛載
匿名:docker run -d -P --name nginx02 -v /ect/nginx nginx
具名:docker run -d -P --name nginx03 -v juming-nginx:/etc/nginx nginx
數(shù)據(jù)共享:
(1)先啟動(dòng)一個(gè)centos鏡像,docker run -it -v /Users/sleepydive/Volum:/home centos /bin/bash ? 生成一個(gè)容器。工作時(shí)產(chǎn)生一些數(shù)據(jù)
(2)啟動(dòng)第二個(gè)鏡像,使它的容器繼承第一個(gè)容器數(shù)據(jù)卷內(nèi)的數(shù)據(jù)
docker run -it --name centos2 --volumes-from 38567a0ed56addfd56ef2250d6db03352c72bb44d9e458e24a178d7ce17b9530 centos (這就是不給容器數(shù)據(jù)卷命名的后果)
(3)可以發(fā)現(xiàn)兩個(gè)容器加載不同的鏡像,但是第二個(gè)容器生成的時(shí)候獲取了本地?cái)?shù)據(jù)卷里的數(shù)據(jù)
【示例:掛載mysql】
通過docker關(guān)閉MySQL容器,就會(huì)導(dǎo)致數(shù)據(jù)丟失,因此修改容器之后需要保存或者掛載mysql數(shù)據(jù)庫(kù)
兩個(gè)mysql共享一個(gè)數(shù)據(jù)卷:
docker run -d -p 3310:3306 -v /etc/mysql/conf.d -v /var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql?
docker run -d -p 3310:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql02 --volumes-from mysql01 mysql
【關(guān)于mysql鏡像的其他操作】
在數(shù)據(jù)庫(kù)鏡像中登陸:
mysql -u root -p
修改密碼:
alter user 'root'@'localhost' identified by '333333’;
輸出數(shù)據(jù)文件的存放路徑
show variables like '%datadir%'; ?
結(jié)果為:
+---------------+-----------------+
| Variable_name | Value ? ? ? ? ? ??????????|
+---------------+-----------------+
| datadir ? ? ? ? ??? ? | /var/lib/mysql/ ?????|
+---------------+-----------------+
在外部查看mysql配置文件位置
mysql --help | grep my.cnf
結(jié)果為/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf?