我曾使用Fabric8的插件来编排我的图像和容器。
其中,我只需要在启动maven(应用程序)时删除其中一个容器;其他容器:RabbitMQ,MySQL,...我直接从集线器导入,如果他们已经有一个运行图像的容器,我就不需要停止并擦除它们。
现在我使用mvn clean package docker:stop docker:build docker:start
来停止构建(只有应用程序)并启动所有容器,是否有人知道任何属性来选择停止/删除哪个容器而哪些容器没有?
更新
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.23.0</version>
<configuration>
<!-- <dockerHost>http://192.168.99.100:2375</dockerHost> -->
<dockerHost>http://127.0.0.1:2375</dockerHost>
<verbose>true</verbose>
<images>
<image>
<name>${docker.image.name}</name>
<alias>${docker.alias.name}</alias>
<build>
<dockerFile>Dockerfile</dockerFile>
<dockerFileDir>${project.basedir}/src/test/docker/</dockerFileDir>
<assembly>
<descriptorRef>artifact</descriptorRef>
</assembly>
<tags>
<tag>latest</tag>
<tag>${project.version}</tag>
</tags>
</build>
<run>
<namingStrategy>alias</namingStrategy>
<ports>
<port>
8888:8888
</port>
</ports>
</run>
</image>
<image>
<name>rabbit-sdk</name>
<alias>some-rabbit</alias>
<build>
<assembly>
<descriptorRef>artifact</descriptorRef>
</assembly>
<dockerFile>DockerfileRabbit</dockerFile>
<dockerFileDir>${project.basedir}/src/test/docker/</dockerFileDir>
<tags>
<tag>latest</tag>
</tags>
</build>
<run>
<namingStrategy>alias</namingStrategy>
<ports>
<port>
8181:15672
</port>
<port>
5671:5671
</port>
<port>
5672:5672
</port>
</ports>
</run>
</image>
<image>
<name>redis</name>
<alias>some-redis</alias>
<run>
<namingStrategy>alias</namingStrategy>
<ports>
<port>6379:6379</port>
</ports>
</run>
</image>
</images>
</configuration>
</plugin>
答案 0 :(得分:1)
maven插件documentation for the docker:stop记录了停止容器的所有可用标志。特别是,keepContainer
系统属性可能很有用:
keepContainer
If set to true not destroy container after they have been stopped. Default is false.
使用此选项时,pom中定义的图像容器将被停止,但在调用docker:stop
目标时不会被删除。您可以使用docker:remove目标清理应用容器。
使用docker:remove
,您可以明确指定要删除的容器。在您的情况下,应用程序容器:
mvn -Ddocker.filter=<app-image-name> docker:remove
因此,完整的maven命令将是:
mvn clean package -Ddocker.keepContainer -Ddocker.filter=<app-image-name> docker:stop docker:remove docker:build docker:start
答案 1 :(得分:0)
要完全删除容器,您需要将选项keepContainer=false
传递给docker:stop
命令。要删除特定的泊坞窗应用程序图像,可以将removeMode
属性与过滤器选项一起使用。它会像:
mvn -Ddocker.filter=<image-name-for-app> docker:remove