需要搞清楚一个概念的是,docker的容器设计理念是可以即开即用,用完可以随意删除,而新建容器是根据镜像进行渲染,容器的修改是不会影响到镜像,但是有时候容器里面运行的产生的数据(如mysql)或者配置项(如nginx的nginx.conf)我们又需要保存起来的,因而我们需要对容器某些修改的数据进行挂载。
下面介绍三种持久化数据的方式
1.挂载磁盘到本地
docker run -v 宿主目录:容器挂载的目录 镜像
这时候docker会自动在对应的目录下进行挂载,值得注意的是,如果容器里面没有宿主机对应的目录,那么容器会自动创建对应的目录。如果没有指定宿主目录,那么会自动在/var/lib/docker/volumes/下进行挂载。
2.使用数据容器
可以选择创建docker容器,来作为共享数据的容器。
# 创建数据容器
docker create -v 宿主目录:容器目录 --name 数据容器名字 基于的环境
# 挂载
docker run --volumes-from 数据容器名字 镜像
3.持久化到镜像
适用于镜像里的某些运行环境的修改,如php-fpm里面还需要多安装一个php-pdo之类的东西。
# 保存更改并生成为一个新的image文件
$ docker commit -m "mess" 镜像id 镜像名字
操作挂载盘
# 查看全部volume
docker volume ls
# 删除对应的volume
docker volume rm volumeid