Beispiel #1
0
 @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);
 }
Beispiel #2
0
  @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) {
    }
  }