private async Task PullImage(CancellationToken ct) { _logger.LogInformation("Pulling container image: {}", ImageName); var tagSplitIdx = ImageName.LastIndexOf(":", StringComparison.InvariantCultureIgnoreCase); var createParameters = new ImagesCreateParameters { FromImage = ImageName.Substring(0, tagSplitIdx), Tag = ImageName.Substring(tagSplitIdx + 1), }; await DockerClient.Images.CreateImageAsync( createParameters, new AuthConfig(), new Progress <JSONMessage>(m => { _logger.LogTrace("[{}] {}", m.Status, m.ProgressMessage); }), ct); // we should not catch exceptions thrown by inspect because the image is // expected to be available since we've just pulled it var image = await DockerClient.Images.InspectImageAsync(ImageName, ct); ImageId = image.ID; }