2016-06-08 06:23:11 +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" >
2017-03-20 11:01:35 +00:00
< div class = "pull-left" ng-repeat = "tag in image.RepoTags" style = "display:table" >
2017-03-20 10:45:04 +00:00
< div class = "input-group col-md-1" style = "padding:0 15px" >
< span class = "input-group-addon" > {{ tag }}< / span >
< span class = "input-group-btn" >
2017-05-23 18:43:58 +00:00
< a data-toggle = "tooltip" class = "btn btn-primary interactive" title = "Push to registry" ng-click = "pushTag(tag)" >
2017-03-20 10:45:04 +00:00
< span class = "fa fa-upload white-icon" aria-hidden = "true" > < / span >
< / a >
2017-05-23 18:43:58 +00:00
< a data-toggle = "tooltip" class = "btn btn-primary interactive" title = "Pull from registry" ng-click = "pullTag(tag)" >
2017-03-20 10:45:04 +00:00
< span class = "fa fa-download white-icon" aria-hidden = "true" > < / span >
< / a >
2017-03-20 11:01:35 +00:00
< a data-toggle = "tooltip" class = "btn btn-primary interactive" title = "Remove tag" ng-click = "removeTag(tag)" >
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" >
2017-03-20 11:01:35 +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
2018-03-14 05:32:14 +00:00
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
2016-08-17 06:05:17 +00:00
< 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-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 -->
2018-07-03 18:31:02 +00:00
< por-image-registry
image="formValues.Image"
registry="formValues.Registry"
label-class="col-sm-1" input-class="col-sm-11 col-md-5"
>< / 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" >
2017-06-20 11:00:32 +00:00
< button type = "button" class = "btn btn-primary btn-sm" ng-disabled = "!formValues.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 }}
2018-03-13 05:36:53 +00:00
< button 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 >
2018-07-26 13:09:48 +00:00
< button 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 >
< / 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 >
2018-02-01 12:27:52 +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 >
< 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 >
< 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 >
< td > Docker {{ image.DockerVersion }} on {{ image.Os}}, {{ image.Architecture }}< / td >
2016-06-02 05:34:03 +00:00
< / 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 >
2017-03-20 11:01:35 +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 >
2017-03-20 11:01:35 +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 >
2013-06-09 23:11:40 +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 >
2018-03-14 00:27:06 +00:00
< th style = "white-space:nowrap;" >
< 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" >
2018-03-14 00:27:06 +00:00
< td style = "white-space:nowrap;" >
{{ layer.Order }}
< / td >
2017-07-08 07:21:30 +00:00
< td style = "white-space:nowrap;" >
{{ 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" >
2017-07-08 06:59: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 >
< span id = "layer-command-{{$index}}-short" >
2017-07-08 07:21:30 +00:00
{{ layer.CreatedBy | imagelayercommand | truncate:130 }}
< span ng-if = "layer.CreatedBy.length > 130" style = "margin-left: 5px;" >
< a id = "layer-command-expander{{$index}}" class = "btn" ng-click = 'toggleLayerCommand($index)' >
< 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" >
2017-07-08 06:59:32 +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 >