当容器停止时,容器创建的 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
这是我的 spring 启动应用程序
的 DockerfileFROM 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