Docker 卷装载路径
Docker volume mount path
我正在尝试开始使用 Docker 卷。我有一个简单的 Python Flask 应用程序,它将数据存储在 sqlite3 数据库中。 运行 没有卷的容器中的应用程序可以工作,但是当然,每次我重新启动容器时,所有数据库数据都会丢失。
我已尝试阅读有关如何使用卷的可用文档,并创建了一个新的命名卷:
docker volume create mydb
但是我不知道在启动带有卷的容器时必须指定什么路径。如果我这样做
docker run -p 5000:5000 -v mydb:/db my-app
重新启动时仍然丢失所有数据。我需要指定什么路径而不是 /db
?这取决于什么?
您可以使用 bind mounts
or docker volumes
.
假设您选择 /<path-to-db>
作为数据库在容器内的位置,./data
是您主机文件系统上您想用来保存数据库的文件夹,或者 mydb
是您使用的音量:
docker run -p 5000:5000 -v ./data:/<path-to-db> my-app
docker run -p 5000:5000 -v mydb:/<path-to-db> my-app
要找出您用来存储文件的容器内的哪个路径(如果您不确定),请查找 sqlite3.connect
代码:参数是您需要的路径。
命名卷不应丢失数据,如 the docs:
中所述
卷是保存 Docker 容器生成和使用的数据的首选机制。
您实际需要的是确保将数据库保存到指定卷将使用的正确目录中。我建议在你的 flask 应用程序中创建一个特定的目录以保存 sqlite3 文件,然后将该目录挂载到你的命名卷。
因此,例如您的 sqlite3 文件路径是:/home/myflaskapp/db
那么挂载将如下所示,否则您将丢失数据,因为您没有挂载要保留的正确路径:
docker run -p 5000:5000 -v mydb:/home/myflaskapp/db my-app
我正在尝试开始使用 Docker 卷。我有一个简单的 Python Flask 应用程序,它将数据存储在 sqlite3 数据库中。 运行 没有卷的容器中的应用程序可以工作,但是当然,每次我重新启动容器时,所有数据库数据都会丢失。
我已尝试阅读有关如何使用卷的可用文档,并创建了一个新的命名卷:
docker volume create mydb
但是我不知道在启动带有卷的容器时必须指定什么路径。如果我这样做
docker run -p 5000:5000 -v mydb:/db my-app
重新启动时仍然丢失所有数据。我需要指定什么路径而不是 /db
?这取决于什么?
您可以使用 bind mounts
or docker volumes
.
假设您选择 /<path-to-db>
作为数据库在容器内的位置,./data
是您主机文件系统上您想用来保存数据库的文件夹,或者 mydb
是您使用的音量:
docker run -p 5000:5000 -v ./data:/<path-to-db> my-app
docker run -p 5000:5000 -v mydb:/<path-to-db> my-app
要找出您用来存储文件的容器内的哪个路径(如果您不确定),请查找 sqlite3.connect
代码:参数是您需要的路径。
命名卷不应丢失数据,如 the docs:
中所述卷是保存 Docker 容器生成和使用的数据的首选机制。
您实际需要的是确保将数据库保存到指定卷将使用的正确目录中。我建议在你的 flask 应用程序中创建一个特定的目录以保存 sqlite3 文件,然后将该目录挂载到你的命名卷。
因此,例如您的 sqlite3 文件路径是:/home/myflaskapp/db
那么挂载将如下所示,否则您将丢失数据,因为您没有挂载要保留的正确路径:
docker run -p 5000:5000 -v mydb:/home/myflaskapp/db my-app