@Inject public DockerInstance( DockerConnector docker, @Named("machine.docker.registry") String registry, DockerMachineFactory dockerMachineFactory, @Assisted Machine machine, @Assisted("container") String container, @Assisted("image") String image, @Assisted DockerNode node, @Assisted LineConsumer outputConsumer, DockerInstanceStopDetector dockerInstanceStopDetector, DockerInstanceProcessesCleaner processesCleaner) { super(machine); this.dockerMachineFactory = dockerMachineFactory; this.container = container; this.docker = docker; this.image = image; this.outputConsumer = outputConsumer; this.registry = registry; this.node = node; this.dockerInstanceStopDetector = dockerInstanceStopDetector; this.processesCleaner = processesCleaner; this.machineProcesses = new ConcurrentHashMap<>(); processesCleaner.trackProcesses(this); }
@Override public void destroy() throws MachineException { machineProcesses.clear(); processesCleaner.untrackProcesses(getId()); dockerInstanceStopDetector.stopDetection(container); try { if (getConfig().isDev()) { node.unbindWorkspace(); } docker.killContainer(container); docker.removeContainer(container, true, true); } catch (IOException e) { throw new MachineException(e.getLocalizedMessage()); } try { docker.removeImage(image, false); } catch (IOException ignore) { } }