2022-07-06 06:08:45 +00:00
< page-header title = "'Image details'" breadcrumbs = "[{label:'Images', link:'docker.images'}, image.Id]" > < / page-header >
2016-06-08 06:23:11 +00:00
2017-03-20 11:01:35 +00:00
< div class = "row" ng-if = "image.RepoTags.length > 0" >
2016-06-02 05:34:03 +00:00
< div class = "col-lg-12 col-md-12 col-xs-12" >
< rd-widget >
2022-07-19 03:29:50 +00:00
< rd-widget-header icon = "tag" feather-icon = "true" title-text = "Image tags" > < / rd-widget-header >
2017-03-20 10:45:04 +00:00
< rd-widget-body >
< form class = "form-horizontal" >
< div class = "form-group" >
< div class = "row" >
2022-01-17 05:53:32 +00:00
< div class = "pull-left" ng-repeat = "tag in image.RepoTags" style = "display: table" >
2022-08-04 13:10:13 +00:00
< div class = "input-group col-md-1 !pr-3.5 !pl-3.5" >
< span class = "input-group-addon" style = "border-right: 1px solid var(--border-input-group-addon-color); border-radius: 4px" > {{ tag }}< / span >
< span class = "input-group-btn" style = "padding: 0px 5px" >
< span style = "margin: 0px 5px" authorization = "DockerImagePush" >
< a data-toggle = "tooltip" class = "btn btn-primary interactive" title = "Push to registry" ng-click = "pushTag(tag)" >
< pr-icon icon = "'upload'" feather = "true" class = "text-white" > < / pr-icon >
< / a >
< / span >
< span class = "my-0 mx-1" authorization = "DockerImageCreate" >
< a data-toggle = "tooltip" class = "btn btn-primary interactive" title = "Pull from registry" ng-click = "pullTag(tag)" >
< pr-icon icon = "'download'" feather = "true" class = "text-white" > < / pr-icon >
< / a >
< / span >
< span class = "my-0 mx-1" authorization = "DockerImageDelete" >
< a data-toggle = "tooltip" class = "btn btn-primary interactive" title = "Remove tag" ng-click = "removeTag(tag)" >
< pr-icon icon = "'trash-2'" feather = "true" class = "text-white" > < / pr-icon >
< / a >
< / span >
2017-03-20 10:45:04 +00:00
< / span >
< / div >
< / div >
< / div >
< / div >
< div class = "form-group" >
< div class = "col-sm-12" >
2022-08-04 13:10:13 +00:00
< span class = "small text-muted" authorization = "DockerImageDelete" >
Note: you can click on the upload icon < pr-icon icon = "'upload'" feather = "true" > < / pr-icon > to push an image or on the download icon
< pr-icon icon = "'download'" feather = "true" > < / pr-icon > to pull an image or on the trash icon < pr-icon icon = "'trash-2'" feather = "true" > < / pr-icon > to delete a tag.
2017-03-20 10:45:04 +00:00
< / span >
< / div >
2017-11-12 19:27:28 +00:00
< div class = "col-sm-12" >
2022-08-04 13:10:13 +00:00
< span id = "downloadResourceHint" class = "createResource ml-0" style = "display: none" >
2017-11-12 19:27:28 +00:00
Download in progress...
2022-08-04 13:10:13 +00:00
< i class = "fa fa-circle-notch fa-spin ml-0.5" aria-hidden = "true" > < / i >
2017-11-12 19:27:28 +00:00
< / span >
2022-08-04 13:10:13 +00:00
< span id = "uploadResourceHint" class = "createResource ml-0.5" style = "display: none" >
2017-11-12 19:27:28 +00:00
Upload in progress...
2022-08-04 13:10:13 +00:00
< i class = "fa fa-circle-notch fa-spin ml-0.5" aria-hidden = "true" > < / i >
2017-11-12 19:27:28 +00:00
< / span >
< / div >
2017-03-20 10:45:04 +00:00
< / div >
< / form >
2016-06-02 05:34:03 +00:00
< / rd-widget-body >
< / rd-widget >
< / div >
< / div >
2016-08-10 03:14:10 +00:00
2019-05-24 06:04:58 +00:00
< div class = "row" authorization = "DockerImageCreate" >
2016-08-17 06:05:17 +00:00
< div class = "col-lg-12 col-md-12 col-xs-12" >
< rd-widget >
2022-07-19 03:29:50 +00:00
< rd-widget-header icon = "tag" feather-icon = "true" title-text = "Tag the image" > < / rd-widget-header >
2016-08-17 06:05:17 +00:00
< rd-widget-body >
< form class = "form-horizontal" >
2017-06-20 11:00:32 +00:00
<!-- image - and - registry -->
2021-08-12 11:28:25 +00:00
< por-image-registry
model="formValues.RegistryModel"
label-class="col-sm-1"
input-class="col-sm-11"
endpoint="endpoint"
is-admin="isAdmin"
set-validity="setPullImageValidity"
check-rate-limits="true"
>< / por-image-registry >
2017-06-20 11:00:32 +00:00
<!-- !image - and - registry -->
2016-08-17 06:05:17 +00:00
<!-- tag - note -->
< div class = "form-group" >
< div class = "col-sm-12" >
< span class = "small text-muted" > Note: if you don't specify the tag in the image name, < span class = "label label-default" > latest< / span > will be used.< / span >
< / div >
< / div >
<!-- !tag - note -->
< div class = "form-group" >
< div class = "col-sm-12" >
2021-10-26 02:22:28 +00:00
< button type = "button" class = "btn btn-primary btn-sm" ng-disabled = "!formValues.RegistryModel.Image" ng-click = "tagImage()" > Tag< / button >
2016-08-17 06:05:17 +00:00
< / div >
< / div >
< / form >
< / rd-widget-body >
< / rd-widget >
< / div >
< / div >
2016-06-02 05:34:03 +00:00
< div class = "row" >
2016-08-10 03:14:10 +00:00
< div class = "col-lg-12 col-md-12 col-xs-12" >
2016-06-02 05:34:03 +00:00
< rd-widget >
2022-07-19 03:29:50 +00:00
< rd-widget-header icon = "list" feather-icon = "true" title-text = "Image details" > < / rd-widget-header >
2016-06-02 05:34:03 +00:00
< rd-widget-body classes = "no-padding" >
< table class = "table" >
< tbody >
< tr >
2016-08-10 03:14:10 +00:00
< td > ID< / td >
2016-06-02 05:34:03 +00:00
< td >
2016-08-10 03:14:10 +00:00
{{ image.Id }}
2022-08-04 13:10:13 +00:00
< button authorization = "DockerImageDelete" class = "btn btn-xs btn-danger" ng-click = "removeImage(image.Id)" >
< pr-icon icon = "'trash-2'" feather = "true" > < / pr-icon > Delete this image
< / button >
2020-04-10 21:54:53 +00:00
< button
authorization="DockerImageGet"
class="btn btn-xs btn-primary"
ng-click="exportImage(image)"
button-spinner="$ctrl.exportInProgress"
ng-disabled="state.exportInProgress"
>
2022-08-04 13:10:13 +00:00
< pr-icon icon = "'download'" feather = "true" > < / pr-icon >
2020-04-10 21:54:53 +00:00
< span ng-hide = "state.exportInProgress" > Export this image< / span >
< span ng-show = "state.exportInProgress" > Export in progress...< / span >
2018-07-26 13:09:48 +00:00
< / button >
2016-06-02 05:34:03 +00:00
< / td >
< / tr >
2016-08-10 03:14:10 +00:00
< tr ng-if = "image.Parent" >
2016-06-02 05:34:03 +00:00
< td > Parent< / td >
2020-04-10 21:54:53 +00:00
< td
>< a ui-sref = "docker.images.image({id: image.Parent})" > {{ image.Parent }}< / a > < /td
>
2016-06-02 05:34:03 +00:00
< / tr >
< tr >
2016-08-10 03:14:10 +00:00
< td > Size< / td >
2020-04-10 21:54:53 +00:00
< td > {{ image.VirtualSize | humansize }}< / td >
2016-06-02 05:34:03 +00:00
< / tr >
< tr >
2016-08-10 03:14:10 +00:00
< td > Created< / td >
2020-04-10 21:54:53 +00:00
< td > {{ image.Created | getisodate }}< / td >
2016-06-02 05:34:03 +00:00
< / tr >
< tr >
2016-08-10 03:14:10 +00:00
< td > Build< / td >
2020-04-10 21:54:53 +00:00
< td > Docker {{ image.DockerVersion }} on {{ image.Os }}, {{ image.Architecture }}< / td >
2016-06-02 05:34:03 +00:00
< / tr >
2021-01-11 02:35:19 +00:00
< tr ng-if = "!(image.Labels | emptyobject)" >
< td > Labels< / td >
< td >
< table class = "table table-bordered table-condensed" >
< tr ng-repeat = "(k, v) in image.Labels" >
< td > {{ k }}< / td >
< td > {{ v }}< / td >
< / tr >
< / table >
< / td >
< / tr >
2016-08-10 03:14:10 +00:00
< tr ng-if = "image.Author" >
< td > Author< / td >
< td > {{ image.Author }}< / td >
2016-06-02 05:34:03 +00:00
< / tr >
2016-08-10 03:14:10 +00:00
< / tbody >
< / table >
< / rd-widget-body >
< / rd-widget >
< / div >
< / div >
< div class = "row" >
< div class = "col-lg-12 col-md-12 col-xs-12" >
< rd-widget >
2022-07-19 03:29:50 +00:00
< rd-widget-header icon = "list" feather-icon = "true" title-text = "Dockerfile details" > < / rd-widget-header >
2016-08-10 03:14:10 +00:00
< rd-widget-body classes = "no-padding" >
< table class = "table" >
< tbody >
2016-06-02 05:34:03 +00:00
< tr >
2016-08-10 03:14:10 +00:00
< td > CMD< / td >
2020-04-10 21:54:53 +00:00
< td
>< code > {{ image.Command | command }}< / code > < /td
>
2016-06-02 05:34:03 +00:00
< / tr >
2017-03-20 11:01:35 +00:00
< tr ng-if = "image.Entrypoint" >
2016-08-10 03:14:10 +00:00
< td > ENTRYPOINT< / td >
2020-04-10 21:54:53 +00:00
< td
>< code > {{ image.Entrypoint | command }}< / code > < /td
>
2016-08-10 03:14:10 +00:00
< / tr >
2017-03-20 11:01:35 +00:00
< tr ng-if = "image.ExposedPorts.length > 0" >
2016-08-10 03:14:10 +00:00
< td > EXPOSE< / td >
< td >
2017-03-20 11:01:35 +00:00
< span class = "label label-default space-right" ng-repeat = "port in image.ExposedPorts" >
2016-08-10 03:14:10 +00:00
{{ port }}
< / span >
< / td >
< / tr >
2017-03-20 11:01:35 +00:00
< tr ng-if = "image.Volumes.length > 0" >
2016-08-10 03:14:10 +00:00
< td > VOLUME< / td >
< td >
2017-03-20 11:01:35 +00:00
< span class = "label label-default space-right" ng-repeat = "volume in image.Volumes" >
2016-08-10 03:14:10 +00:00
{{ volume }}
< / span >
< / td >
2016-06-02 05:34:03 +00:00
< / tr >
2017-03-20 11:01:35 +00:00
< tr ng-if = "image.Env.length > 0" >
2016-08-10 03:14:10 +00:00
< td > ENV< / td >
< td >
< table class = "table table-bordered table-condensed" >
2017-03-20 11:01:35 +00:00
< tr ng-repeat = "var in image.Env" >
2016-08-19 06:41:45 +00:00
< td > {{ var|key: '=' }}< / td >
< td > {{ var|value: '=' }}< / td >
2016-08-10 03:14:10 +00:00
< / tr >
< / table >
< / td >
2016-06-02 05:34:03 +00:00
< / tr >
< / tbody >
< / table >
< / rd-widget-body >
< / rd-widget >
< / div >
2019-03-12 22:09:53 +00:00
< / div >
2017-07-08 06:59:32 +00:00
< div class = "row" ng-if = "history.length > 0" >
< div class = "col-lg-12 col-md-12 col-xs-12" >
< rd-widget >
2022-07-19 03:29:50 +00:00
< rd-widget-header icon = "list" feather-icon = "true" title-text = "Image layers" > < / rd-widget-header >
2017-07-08 06:59:32 +00:00
< rd-widget-body classes = "no-padding" >
< table id = "image-layers" class = "table" >
< thead >
2022-08-04 13:10:13 +00:00
< th class = "whitespace-nowrap" >
< table-column-header
col-title="'Order'"
can-sort="true"
is-sorted="$ctrl.state.orderBy === 'Order'"
is-sorted-desc="$ctrl.state.orderBy === 'Order' & & $ctrl.state.reverseOrder"
ng-click="$ctrl.changeOrderBy('Order')"
>< / table-column-header >
2018-03-14 00:27:06 +00:00
< / th >
2017-07-08 07:21:30 +00:00
< th >
2022-08-04 13:10:13 +00:00
< table-column-header
col-title="'Size'"
can-sort="true"
is-sorted="$ctrl.state.orderBy === 'Size'"
is-sorted-desc="$ctrl.state.orderBy === 'Size' & & $ctrl.state.reverseOrder"
ng-click="$ctrl.changeOrderBy('Size')"
>< / table-column-header >
2017-07-08 07:21:30 +00:00
< / th >
< th >
2022-08-04 13:10:13 +00:00
< table-column-header
col-title="'Layer'"
can-sort="true"
is-sorted="$ctrl.state.orderBy === 'Layer'"
is-sorted-desc="$ctrl.state.orderBy === 'Layer' & & $ctrl.state.reverseOrder"
ng-click="$ctrl.changeOrderBy('Layer')"
>< / table-column-header >
2017-07-08 07:21:30 +00:00
< / th >
2017-07-08 06:59:32 +00:00
< / thead >
< tbody >
2017-07-08 07:21:30 +00:00
< tr ng-repeat = "layer in history | orderBy:sortType:sortReverse" >
2022-08-04 13:10:13 +00:00
< td class = "whitespace-nowrap" >
2018-03-14 00:27:06 +00:00
{{ layer.Order }}
< / td >
2022-08-04 13:10:13 +00:00
< td class = "whitespace-nowrap" >
2017-07-08 07:21:30 +00:00
{{ layer.Size | humansize }}
< / td >
2017-07-08 06:59:32 +00:00
< td class = "expand" >
2017-07-08 07:21:30 +00:00
< div ng-if = "layer.CreatedBy.length > 130" >
2022-01-17 05:53:32 +00:00
< span id = "layer-command-{{ $index }}-full" style = "display: none" >
2017-07-08 07:21:30 +00:00
{{ layer.CreatedBy | imagelayercommand }}
2017-07-08 06:59:32 +00:00
< / span >
2020-04-10 21:54:53 +00:00
< span id = "layer-command-{{ $index }}-short" >
{{ layer.CreatedBy | imagelayercommand | truncate: 130 }}
2022-08-04 13:10:13 +00:00
< span ng-if = "layer.CreatedBy.length > 130" class = "ml-1" >
2020-04-10 21:54:53 +00:00
< a id = "layer-command-expander{{ $index }}" class = "btn" ng-click = "toggleLayerCommand($index)" >
2022-07-26 23:20:21 +00:00
< pr-icon icon = "'plus'" mode = "'alt'" feather = "true" > < / pr-icon >
2017-07-08 07:21:30 +00:00
< / a >
< / span >
2017-07-08 06:59:32 +00:00
< / span >
< / div >
2017-07-08 07:21:30 +00:00
< div ng-if = "layer.CreatedBy.length <= 130" >
2020-04-10 21:54:53 +00:00
< span id = "layer-command-{{ $index }}-full" >
2017-07-08 07:21:30 +00:00
{{ layer.CreatedBy | imagelayercommand }}
2017-07-08 06:59:32 +00:00
< / span >
< / div >
< / td >
< / tr >
< / tbody >
< / table >
< / rd-widget-body >
< / rd-widget >
< / div >
< / div >