Docker compose docker compose装入的卷保留
我正在我的一个项目中使用docker compose。在开发过程中,为了便于开发,我将源目录装载到docker服务中的一个卷中。同时,我有一个db服务(psql),它挂载一个用于持久数据存储的命名卷 我从解决方案开始,一切都很好Docker compose docker compose装入的卷保留,docker-compose,docker-volume,Docker Compose,Docker Volume,我正在我的一个项目中使用docker compose。在开发过程中,为了便于开发,我将源目录装载到docker服务中的一个卷中。同时,我有一个db服务(psql),它挂载一个用于持久数据存储的命名卷 我从解决方案开始,一切都很好 $ docker-compose up -d 当我检查卷时,我会看到命名卷和“未命名卷”(源卷) 我遇到的问题是,当我 $ docker-compose down ... $ docker volume ls DRIVER VOLUME NA
$ docker-compose up -d
当我检查卷时,我会看到命名卷和“未命名卷”(源卷)
我遇到的问题是,当我
$ docker-compose down
...
$ docker volume ls
DRIVER VOLUME NAME
local 226ba7af9689c511cb5e6c06ceb36e6c26a75dd9d619360882a1012cdcd25b72
local myproject_data
这两卷书都保留了下来。每次我跑步
$ docker-compose down
$ docker-compose up -d
将为我的源装载创建一个新卷
$ docker volume ls
DRIVER VOLUME NAME
local 19181286b19c0c3f5b67d7d1f0e3f237c83317816acbdf4223328fdf46046518
local 226ba7af9689c511cb5e6c06ceb36e6c26a75dd9d619360882a1012cdcd25b72
local myproject_data
我知道这不会发生在我的部署服务器上,因为它不会装载源,但是有没有办法不使装载的源持久化?您可以在docker run中使用--rm
选项。要使用它,你可以使用
docker compose rm-v
使用docker compose stop停止容器后
如果你看一下关于的文档,它提到
即使删除了容器本身,数据卷也会保持不变
因此,这意味着停止容器不会删除它创建的卷,无论是命名卷还是匿名卷
现在,如果您进一步阅读删除卷
删除容器后,Docker数据卷仍然存在。你可以
创建命名卷或匿名卷。命名卷具有特定的
容器外部的源表单,例如awesome:/bar。匿名的
卷没有特定的源。删除容器后,您可以
应该指示Docker引擎守护进程清除匿名
卷。为此,请使用--rm选项,例如:
$ docker run --rm -v /foo -v awesome:/bar busybox top
此命令创建一个匿名/foo卷。当容器
删除后,Docker引擎将删除/foo卷,但不会删除some卷
音量
您可以在docker run中使用--rm
选项。要使用它,你可以使用
docker compose rm-v
使用docker compose stop停止容器后
如果你看一下关于的文档,它提到
即使删除了容器本身,数据卷也会保持不变
因此,这意味着停止容器不会删除它创建的卷,无论是命名卷还是匿名卷
现在,如果您进一步阅读删除卷
删除容器后,Docker数据卷仍然存在。你可以
创建命名卷或匿名卷。命名卷具有特定的
容器外部的源表单,例如awesome:/bar。匿名的
卷没有特定的源。删除容器后,您可以
应该指示Docker引擎守护进程清除匿名
卷。为此,请使用--rm选项,例如:
$ docker run --rm -v /foo -v awesome:/bar busybox top
此命令创建一个匿名/foo卷。当容器
删除后,Docker引擎将删除/foo卷,但不会删除some卷
音量
只需使用down命令删除卷:
docker-compose down -v
只需使用down命令删除卷:
docker-compose down -v
谢谢你的回复。这有点奏效,但如果在docker compose down
之后调用docker compose rm-v
,我会得到没有停止的容器。我必须在docker compose停止
后跟着docker compose rm-v
删除我的匿名卷。据我所知,这是最好的办法。不过,如果在docker compose down
中为此设置一个标志就好了。类似于命名卷的--volumes
标志。感谢您的回复。这有点奏效,但如果在docker compose down
之后调用docker compose rm-v
,我会得到没有停止的容器。我必须在docker compose停止
后跟着docker compose rm-v
删除我的匿名卷。据我所知,这是最好的办法。不过,如果在docker compose down
中为此设置一个标志就好了。类似于命名卷的--volumes
标志。