Added method to get sha256 id of a Docker image

pull/508/head
cruizba 2020-06-23 13:13:02 +02:00
parent 499bd8afc5
commit 08647869d3
1 changed files with 15 additions and 4 deletions

View File

@ -26,14 +26,11 @@ import java.util.concurrent.TimeUnit;
import javax.ws.rs.ProcessingException; import javax.ws.rs.ProcessingException;
import com.github.dockerjava.api.command.InspectContainerResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.github.dockerjava.api.DockerClient; import com.github.dockerjava.api.DockerClient;
import com.github.dockerjava.api.command.CreateContainerCmd; import com.github.dockerjava.api.command.CreateContainerCmd;
import com.github.dockerjava.api.command.CreateContainerResponse; import com.github.dockerjava.api.command.CreateContainerResponse;
import com.github.dockerjava.api.command.ExecCreateCmdResponse; import com.github.dockerjava.api.command.ExecCreateCmdResponse;
import com.github.dockerjava.api.command.InspectContainerResponse;
import com.github.dockerjava.api.exception.ConflictException; import com.github.dockerjava.api.exception.ConflictException;
import com.github.dockerjava.api.exception.DockerClientException; import com.github.dockerjava.api.exception.DockerClientException;
import com.github.dockerjava.api.exception.InternalServerErrorException; import com.github.dockerjava.api.exception.InternalServerErrorException;
@ -49,6 +46,9 @@ import com.github.dockerjava.core.DockerClientConfig;
import com.github.dockerjava.core.command.ExecStartResultCallback; import com.github.dockerjava.core.command.ExecStartResultCallback;
import com.github.dockerjava.core.command.PullImageResultCallback; import com.github.dockerjava.core.command.PullImageResultCallback;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import io.openvidu.client.OpenViduException; import io.openvidu.client.OpenViduException;
import io.openvidu.client.OpenViduException.Code; import io.openvidu.client.OpenViduException.Code;
import io.openvidu.server.recording.service.WaitForContainerStoppedCallback; import io.openvidu.server.recording.service.WaitForContainerStoppedCallback;
@ -66,8 +66,10 @@ public class DockerManager {
public void downloadDockerImage(String image, int secondsOfWait) throws Exception { public void downloadDockerImage(String image, int secondsOfWait) throws Exception {
try { try {
// Pull image
this.dockerClient.pullImageCmd(image).exec(new PullImageResultCallback()).awaitCompletion(secondsOfWait, this.dockerClient.pullImageCmd(image).exec(new PullImageResultCallback()).awaitCompletion(secondsOfWait,
TimeUnit.SECONDS); TimeUnit.SECONDS);
} catch (NotFoundException | InternalServerErrorException e) { } catch (NotFoundException | InternalServerErrorException e) {
if (dockerImageExistsLocally(image)) { if (dockerImageExistsLocally(image)) {
log.info("Docker image '{}' exists locally", image); log.info("Docker image '{}' exists locally", image);
@ -212,6 +214,15 @@ public class DockerManager {
return null; return null;
} }
} }
public String getImageSha256(String image) {
try {
return CommandExecutor.execCommand(5000, "/bin/sh", "-c", "docker inspect " + image + " -f \"{{ .Id }}\"");
} catch (IOException | InterruptedException e) {
log.error(e.getMessage());
return null;
}
}
public List<String> getRunningContainers(String fullImageName) { public List<String> getRunningContainers(String fullImageName) {
List<String> containerIds = new ArrayList<>(); List<String> containerIds = new ArrayList<>();