Docker中的数据持久化方式有两种:
数据卷(Data Volumes)
挂载主机目录 (Bind mounts)
数据卷:
数据卷可以在容器之间共享和重用
对数据卷 的修改会立马生效
对数据卷 的更新,不会影响镜像
数据卷默认会一直存在,即使容器被删除
$ docker volume create my-vol #创建数据卷
$ docker volume ls #查看有哪些卷
$ docker volume inspect my-vol #查看卷详情
$ docker run -d -P --name web -v my-vol:/wepapp training/webapp python app.py #把数据卷挂载到容器的/webapp目录
当使用 -P 标记时,Docker 会随机映射一个 49000~49900 的端口到内部容器开放的网络端口。
$ docker inspect web #查看容器详情
$ docker rm -f web #强制删除运行中的容器
$ docker volume rm my-vol #删除卷
$ docker volume prune #清理无用的卷
挂载主机目录:
$ docker run -d -P --name web -v /src/webapp:/opt/webapp training/webapp python app.py #把宿主机的/src/webapp目录挂载到容器的/opt/webapp目录
$ docker run -d -P --name web -v $HOME/.bash_history:/root/.bash_history training/webapp python app.py #把宿主机的文件$HOME/.bash_histor挂载到容器