2020-04-10 21:54:53 +00:00
< rd-header >
2018-06-06 16:12:35 +00:00
< rd-header-title title-text = "Image details" > < / rd-header-title >
2016-06-08 06:23:11 +00:00
< rd-header-content >
2018-02-01 12:27:52 +00:00
< a ui-sref = "docker.images" > Images< / a > > < a ui-sref = "docker.images.image({id: image.Id})" > {{ image.Id }}< / a >
2016-06-08 06:23:11 +00:00
< / rd-header-content >
< / rd-header >
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 >
2018-06-06 16:12:35 +00:00
< rd-widget-header icon = "fa fa-tags" 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" >
2020-04-10 21:54:53 +00:00
< div class = "pull-left" ng-repeat = "tag in image.RepoTags" style = "display: table;" >
< div class = "input-group col-md-1" style = "padding: 0 15px;" >
2017-03-20 10:45:04 +00:00
< span class = "input-group-addon" > {{ tag }}< / span >
2019-05-24 06:04:58 +00:00
< span class = "input-group-btn" authorization = "DockerImagePush, DockerImageCreate, DockerImageDelete" >
< a data-toggle = "tooltip" class = "btn btn-primary interactive" title = "Push to registry" ng-click = "pushTag(tag)" authorization = "DockerImagePush" >
2017-03-20 10:45:04 +00:00
< span class = "fa fa-upload white-icon" aria-hidden = "true" > < / span >
< / a >
2019-05-24 06:04:58 +00:00
< a data-toggle = "tooltip" class = "btn btn-primary interactive" title = "Pull from registry" ng-click = "pullTag(tag)" authorization = "DockerImageCreate" >
2017-03-20 10:45:04 +00:00
< span class = "fa fa-download white-icon" aria-hidden = "true" > < / span >
< / a >
2019-05-24 06:04:58 +00:00
< a data-toggle = "tooltip" class = "btn btn-primary interactive" title = "Remove tag" ng-click = "removeTag(tag)" authorization = "DockerImageDelete" >
2018-03-14 05:32:14 +00:00
< span class = "fa fa-trash-alt white-icon" aria-hidden = "true" > < / span >
2017-03-20 10:45:04 +00:00
< / a >
< / span >
< / div >
< / div >
< / div >
< / div >
< div class = "form-group" >
< div class = "col-sm-12" >
< span class = "small text-muted" >
2020-04-10 21:54:53 +00:00
Note: you can click on the upload icon < span class = "fa fa-upload" aria-hidden = "true" > < / span > to push an image or on the download icon
< span class = "fa fa-download" aria-hidden = "true" > < / span > to pull an image or on the trash icon < span class = "fa fa-trash-alt" aria-hidden = "true" > < / span > 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" >
< span id = "downloadResourceHint" class = "createResource" style = "display: none; margin-left: 0;" >
Download in progress...
2018-03-13 05:36:53 +00:00
< i class = "fa fa-circle-notch fa-spin" aria-hidden = "true" style = "margin-left: 2px;" > < / i >
2017-11-12 19:27:28 +00:00
< / span >
< span id = "uploadResourceHint" class = "createResource" style = "display: none; margin-left: 0;" >
Upload in progress...
2018-03-13 05:36:53 +00:00
< i class = "fa fa-circle-notch fa-spin" aria-hidden = "true" style = "margin-left: 2px;" > < / 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 >
2018-06-06 16:12:35 +00:00
< rd-widget-header icon = "fa-tag" 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 -->
2020-04-10 21:54:53 +00:00
< por-image-registry model = "formValues.RegistryModel" label-class = "col-sm-1" input-class = "col-sm-11" > < / 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" >
2019-11-27 22:36:39 +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 >
2018-06-06 16:12:35 +00:00
< rd-widget-header icon = "fa-clone" 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 }}
2020-04-10 21:54:53 +00:00
< button authorization = "DockerImageDelete" class = "btn btn-xs btn-danger" ng-click = "removeImage(image.Id)"
>< i class = "fa fa-trash-alt space-right" aria-hidden = "true" > < / i > Delete this image< /button
>
< button
authorization="DockerImageGet"
class="btn btn-xs btn-primary"
ng-click="exportImage(image)"
button-spinner="$ctrl.exportInProgress"
ng-disabled="state.exportInProgress"
>
< i class = "fa fa-download space-right" aria-hidden = "true" > < / i >
< 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 >
2018-06-06 16:12:35 +00:00
< rd-widget-header icon = "fa-clone" 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 >
2018-06-06 16:12:35 +00:00
< rd-widget-header icon = "fa-clone" 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 >
2020-04-10 21:54:53 +00:00
< th style = "white-space: nowrap;" >
2018-03-14 00:27:06 +00:00
< a ng-click = "order('Order')" >
Order
< span ng-show = "sortType == 'Order' && !sortReverse" class = "glyphicon glyphicon-chevron-down" > < / span >
< span ng-show = "sortType == 'Order' && sortReverse" class = "glyphicon glyphicon-chevron-up" > < / span >
< / a >
< / th >
2017-07-08 07:21:30 +00:00
< th >
< a ng-click = "order('Size')" >
Size
< span ng-show = "sortType == 'Size' && !sortReverse" class = "glyphicon glyphicon-chevron-down" > < / span >
< span ng-show = "sortType == 'Size' && sortReverse" class = "glyphicon glyphicon-chevron-up" > < / span >
< / a >
< / th >
< th >
< a ng-click = "order('CreatedBy')" >
Layer
< span ng-show = "sortType == 'CreatedBy' && !sortReverse" class = "glyphicon glyphicon-chevron-down" > < / span >
< span ng-show = "sortType == 'CreatedBy' && sortReverse" class = "glyphicon glyphicon-chevron-up" > < / span >
< / a >
< / 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" >
2020-04-10 21:54:53 +00:00
< td style = "white-space: nowrap;" >
2018-03-14 00:27:06 +00:00
{{ layer.Order }}
< / td >
2020-04-10 21:54:53 +00:00
< td style = "white-space: 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" >
2020-04-10 21:54:53 +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 }}
2017-07-08 07:21:30 +00:00
< span ng-if = "layer.CreatedBy.length > 130" style = "margin-left: 5px;" >
2020-04-10 21:54:53 +00:00
< a id = "layer-command-expander{{ $index }}" class = "btn" ng-click = "toggleLayerCommand($index)" >
2017-07-08 07:21:30 +00:00
< i class = "fa fa-plus-circle" aria-hidden = "true" > < / i >
< / 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 >