docker-compose 挂载卷剩余
docker-compose mounted volume remain
我在我的一个项目中使用 docker-compose。在开发过程中,我将我的源目录挂载到我的 docker 服务之一的卷中,以便于开发。同时,我有一个数据库服务(psql),它挂载了一个用于持久数据存储的命名卷。
我从解决方案开始,一切正常
$ docker-compose up -d
当我检查我的卷时,我看到了命名和 "unnamed"(源卷)。
$ docker volume ls
DRIVER VOLUME NAME
local 226ba7af9689c511cb5e6c06ceb36e6c26a75dd9d619360882a1012cdcd25b72
local myproject_data
我遇到的问题是,当我这样做时
$ 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 运行 中使用 --rm
选项。要将它与 docker-compose 一起使用,您可以使用
docker-compose rm -v
使用 docker-compose stop
停止容器后
如果您浏览有关 Data volumes 的文档,它会提到
Data volumes persist even if the container itself is deleted.
这意味着,停止容器不会删除它创建的卷,无论是命名卷还是匿名卷。
现在,如果您进一步阅读 Removing volumes
A Docker data volume persists after a container is deleted. You can
create named or anonymous volumes. Named volumes have a specific
source form outside the container, for example awesome:/bar. Anonymous
volumes have no specific source. When the container is deleted, you
should instruct the Docker Engine daemon to clean up anonymous
volumes. To do this, use the --rm option, for example:
$ docker run --rm -v /foo -v awesome:/bar busybox top
This command creates an anonymous /foo volume. When the container is
removed, the Docker Engine removes the /foo volume but not the awesome
volume.
只需使用 down 命令删除卷:
docker-compose down -v
我在我的一个项目中使用 docker-compose。在开发过程中,我将我的源目录挂载到我的 docker 服务之一的卷中,以便于开发。同时,我有一个数据库服务(psql),它挂载了一个用于持久数据存储的命名卷。
我从解决方案开始,一切正常
$ docker-compose up -d
当我检查我的卷时,我看到了命名和 "unnamed"(源卷)。
$ docker volume ls
DRIVER VOLUME NAME
local 226ba7af9689c511cb5e6c06ceb36e6c26a75dd9d619360882a1012cdcd25b72
local myproject_data
我遇到的问题是,当我这样做时
$ 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 运行 中使用 --rm
选项。要将它与 docker-compose 一起使用,您可以使用
docker-compose rm -v
使用 docker-compose stop
如果您浏览有关 Data volumes 的文档,它会提到
Data volumes persist even if the container itself is deleted.
这意味着,停止容器不会删除它创建的卷,无论是命名卷还是匿名卷。
现在,如果您进一步阅读 Removing volumes
A Docker data volume persists after a container is deleted. You can create named or anonymous volumes. Named volumes have a specific source form outside the container, for example awesome:/bar. Anonymous volumes have no specific source. When the container is deleted, you should instruct the Docker Engine daemon to clean up anonymous volumes. To do this, use the --rm option, for example:
$ docker run --rm -v /foo -v awesome:/bar busybox top
This command creates an anonymous /foo volume. When the container is removed, the Docker Engine removes the /foo volume but not the awesome volume.
只需使用 down 命令删除卷:
docker-compose down -v