1、持久化方法一:使用卷来完成持久化 ( Type: volume )
(1)、新建卷 volume
docker volume create devtest --devtest是卷名称
(2)、docker volume ls --查看服务器中的所有卷
(3)、docker volume inspect devtest --查看卷的基本信息
(4)、启动容器时加上上面创建的卷
docker run -d --name tomcat -v devtest:/data tomcat:latest --name参数指定别名, -v 表示将卷的文件和容器中的/data目录进行同步
说明: -v 参数 将docker创建的卷命名为devtest,并且将路径挂载为/data,这个路径需要看容器具体的数据路径,有的dockerfile文件中会对这个路劲进行定义。
docker run -d --name=nginxtest -v nginx-vol:/usr/share/nginx/html:ro nginx:latest --使用只读卷
备注:创建容器时使用卷,容器启动之后进入容器,进入到/data目录,创建一个文件。同理是可以在docker卷的相应目录查看到对应文件
docker volume 对应默认目录为: /var/lib/docker/volume/volume名称
(5)、docker inspect devtest --验证创建卷并安装成功(找到mount部分)
(6)、删除卷
docker volume rm
docker volume prune --删除所有没有使用的本地卷
2、持久化方法二:直接使用绑定挂载来完成持久化 ( Type: bind )
直接指定本地某个目录和容器的某个目录,从而进行绑定。可以理解成将本地目录挂载到容器的指定目录下,在容器里修改那么本地的这个目录中的内容也会被修改。
docker 启动脚本
docker run -d -it --name devtest -v "$(pwd)"/target:/app nginx:latest
--使用docker inspect devtest验证绑定安装正确创建。寻找Mounts部分:可以发现绑定类型为bind
备注:
(1)、完成上面的绑定之后,会将本地源目录中的文件同步到容器中,在容器中创建的文件也会被同步到本地文件目录中
(2)、如果容器中的目的目录中存在文件,则会将相应的文件给隐藏。大多数情况下是会因为容器无法正常启动而报错。