当容器停止时,容器创建的 docker 卷会发生什么

What happens to docker volumes created by container when the container is stopped

这是我的 spring 启动应用程序

的 Dockerfile
FROM openjdk:8u151-jdk-alpine
VOLUME /tmp
ADD target/classes/application.properties /workdir/application.properties
ADD target/foo-app-2.0.0.jar /workdir/app.jar
WORKDIR /workdir
ENV JAVA_OPTS=""
EXPOSE 8080
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar app.jar" ]

它在容器启动时创建一个卷 /tmp,存储在主机的 /var/lib/docker 文件夹中。

容器停止时是否删除了该卷,即清理了该卷的主机中的所有内容?如果不是,我该如何配置?

不,卷不会自动删除(即使容器被删除),您可以使用 docker volume ls 命令列出它们。

这可能会导致主机中存在大量悬空卷(未关联到任何容器的卷)。要删除它们,您可以使用此命令,例如:

docker volume rm `docker volume ls -q -f dangling=true`

(取自此处https://coderwall.com/p/hdsfpq/docker-remove-all-dangling-volumes

添加到@Whites11 回答 -

No, volumes are not deleted automatically/by_default (even if the container gets deleted) and you can list them using docker volume ls command.

但是,一旦您的容器停止,您可以使用 rm -v 删除与其关联的卷:

$ docker stop $CONTAINER_ID && docker rm -v $CONTAINER_ID

手动-

Usage: docker rm [OPTIONS] CONTAINER [CONTAINER...]

Remove one or more containers

Options:

-f, --force Force the removal of a running container (uses SIGKILL)

-l, --link Remove the specified link
-v, --volumes Remove the volumes associated with the container