docker的持久化
1、volume
#启动一个容器 -v定义volume的名字、volume的目录-e是环境变量 MYSQL_ALLOW_EMPTY_PASSWORD允许密码为空
docker run -d -v mysql:/var/lib/mysql --name mysql1 -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql
#进入容器
docker exec -it mysql1 /bin/bash
#进入数据库并创建一个库
mysql -uroot
#删除容器
docker rm -f mysql1
#再创建一个容器
docker run -d -v mysql:/var/lib/mysql --name mysql2 -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql
#进入容器
docker exec -it mysql2 /bin/bash
#进入数据库并查库
mysql -uroot
发现,把容器删了,在创建一个容器这个数据还在。
是因为我在创建第一个容器时,创了一个volume,再删除容器时候这个volume并没有删除。当再次创建容器时候继续使用这个volme,所以数据就还在
volme映射到本机的目录。
2、bind mouting
#创建一个网页
echo meml > /home/index.html
ls /home/
index.html ml
#启动一个容器 -v把/home目录映射到容器的/usr/share/nginx/html 目录
docker run -d -v /home/:/usr/share/nginx/html --name nginx -p 80:80 nginx
ff21c860965f1d7d744cd22a2f92bebaa93b034f6c67aa8f32a48054ace1f93e
#测试
curl 127.0.0.1
meml
#测试
docker exec -it nginx /bin/bash
cd /usr/share/nginx/html
ls (发现有下面两个东西,正是在/home里面的)
index.html ml