第一种
指定volume文件mysql存储,存储的位置为/var/lib/mysql
-v mysql:/var/lib/mysql
第二种
同步文件,将容器中的skeleton文件夹的内容同步到宿主机的skeleton文件夹
-v /soymilk/docker/skeleton:/skeleton (-v $(pwd):/skeleton)
一般容器的数据会保存在容器内,一旦容器被删除,数据随之被删除,所以引入数据持久化技术,将容器的数据外挂在外部的存储中,一旦容器被删除,数据仍能保存下来
1.sudo docker run -d -v mysql:/var/lib/mysql --name mysql1 -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql
-d 后台运行
-v容器起个别名,别名:容器中所在位置
–name 容器名
-e设置环境变量,MYSQL_ALLOW_EMPTY_PASSWORD=true是为了不用创建root密码使用mysql
2.查看volume:
docker volume ls
docker volume inspect 容器名
删除volume:
docker volume rm volume名
3.进入mysql容器里面:
sudo docker exec -it mysql1 /bin/bash
4.删除mysql容器
sudo docker rm -f mysql1
-f 强制删除正在运行中的容器
5.仍旧使用之前的volume ,创建新的容器mysql2
sudo docker run -d -v mysql:/var/lib/mysql --name mysql2 -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql
进入mysql2容器
sudo docker exec -it mysql1 /bin/bash
将本地目录和容器中的目录一一对应起来
这种方式的数据持久化是将docker容器指定的文件夹下的所有数据与本地对应文件夹的数据同步,如果本地这个文件夹有改动 docker对应文件夹的内容也会随之改动 反过来也是一样的
docker run -d --name web -p 80:80 -v $(pwd):/usr/share/nginx/html soymilk/nginx
命令总结:
- docker volume create
命令用于创建新卷。默认情况下,新卷创建使用 local 驱动,但是可以通过 -d 参数来指定不同的驱动。 - docker volume ls
会列出本地 Docker 主机上的全部卷。 - docker volume inspect
用于查看卷的详细信息。可以使用该命令查看卷在 Docker 主机文件系统中的具体位置。 - docker volume prune
会删除未被容器或者服务副本使用的全部卷。 - docker volume rm
删除未被使用的指定卷。