这是我的Spring Boot应用程序的Dockerfile
public class PackVolumeConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
var package = value as packs;
decimal volume = 0;
if(package != null)
{
volume = (package.length ?? default(decimal)) *
(package.width ?? default(decimal)) *
(package.depth ?? default(decimal)) / 1000000000;
return volume;
}
return 0;
}
public object ConvertBack(object value, Type TargetTypes, object parameter, CultureInfo culture)
{
return value;
}
}
启动容器时会创建一个卷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
文件夹中。
当容器停止时是否删除了该卷,即清除了该卷的主机的所有内容?如果不是我如何配置?
答案 0 :(得分:2)
不,卷不会自动删除(即使容器被删除),您可以使用docker volume ls
命令列出它们。
这可能导致主机中存在可能大量的悬空卷(与任何容器无关的卷)。要删除它们,您可以使用此命令,例如:
docker volume rm `docker volume ls -q -f dangling=true`
(从这里https://coderwall.com/p/hdsfpq/docker-remove-all-dangling-volumes)
答案 1 :(得分:2)
添加到@ Whites11回答 -
不,卷不会自动删除/ by_default(即使容器得到了 删除),您可以使用
docker volume ls
命令列出它们。
但是,一旦您的容器停止,您可以使用rm -v
删除与其关联的卷:
$ docker stop $CONTAINER_ID && docker rm -v $CONTAINER_ID
手动 -
用法:docker rm [OPTIONS] CONTAINER [CONTAINER ...]
删除一个或多个容器
选项:
-f, - force强制删除正在运行的容器 (使用SIGKILL)
-l, - link删除指定的链接
-v, - volume删除与之关联的卷 容器