1.为什么持久化
在我们部署环境中,会利用Mysql来储存数据,而假如我们不小心删除了Mysql所处的container,那么我们之前所储存的数据将会丢失,所以说数据的持久化对我们来说是至关重要的.
持久化的方法:
2.持久化的操作
1.Data Volume
1.1 首先我们通过命令 docker pull mysql 拉取mysql的image
1.2 其次我们运行mysql,命令如下:
docker run -d -v mysql1:/var/lib/mysql --name mysql1 -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql
-d:后台运行
-v:数据持久化的操作(把volume中的名字修改为mysql1,文件位置为/var/lib/mysql)
-e:操作mysql的内部命令(MYSQL_ALLOW_EMPTY_PASSWORD=true代表密码为空)
运行完后,查看volume用: docker volume ls 命令
1.3 最后验证
我们进入mysql容器中去,并在mysql中创建dockersssssss表,如图:
完后退出,并删除容器;最后重新创建容器mysql:
docker run -d -v mysql1:/var/lib/mysql --name mysql2 -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql
我们创建的容器mysql2同样使用的是mysql1的volume,最后进入容器mysql2中,查看数据表:
2.bind Mounting
我们这里使用nginx来实现bind mounting
2.1 首先建立Dockerfile和index.html
并生成images: Docker build -t html .
2.2 其次运行文件,并把文件目录映射到当前的目录 docker run -d -v $(pwd):/usr/share/nginx/html -p 80:80 html
2.3 最后,只要我们在当前目录中的index.html修改数据,那么我们线上的文件也会发生变化
一般来说,我们的80端口假如已经被占用,那么在linux中开启81端口,只要把容器中的80端口映射到实际中的81端口就行了,操作如下:
docker run -d -v $(pwd):/usr/share/nginx/html -p 81:80 html
这样就可以实现