157 lines
5.7 KiB
HTML
157 lines
5.7 KiB
HTML
<page-header title="'Container details'" breadcrumbs="[{label:'Containers', link:'docker.containers'}, (container.Name | trimcontainername)]"> </page-header>
|
|
|
|
<div class="mx-4 space-y-4 [&>*]:block mb-4">
|
|
<container-actions-section ng-if="container" environment-id="endpoint.Id" node-name="nodeName" container="container" on-success="(onSuccessAction)"></container-actions-section>
|
|
|
|
<container-status-section
|
|
ng-if="container"
|
|
environment-id="endpoint.Id"
|
|
node-name="nodeName"
|
|
container="container"
|
|
on-success-update="(onSuccessAction)"
|
|
registry-id="getRegistryId()"
|
|
></container-status-section>
|
|
</div>
|
|
|
|
<!-- access-control-panel -->
|
|
<access-control-panel
|
|
ng-if="container"
|
|
resource-id="container.Id"
|
|
resource-control="container.ResourceControl"
|
|
resource-type="resourceType"
|
|
on-update-success="(onUpdateResourceControlSuccess)"
|
|
environment-id="endpoint.Id"
|
|
>
|
|
</access-control-panel>
|
|
<!-- !access-control-panel -->
|
|
|
|
<docker-health-status ng-if="container.State.Health" health="container.State.Health"></docker-health-status>
|
|
|
|
<div class="mx-4 space-y-4 [&>*]:block mb-4">
|
|
<create-image-section environment-id="endpoint.Id" container-id="container.Id" on-success="(onSuccessAction)"></create-image-section>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<div class="col-lg-12 col-md-12 col-xs-12">
|
|
<rd-widget>
|
|
<rd-widget-header icon="list" title-text="Container details"></rd-widget-header>
|
|
<rd-widget-body classes="no-padding">
|
|
<table class="container-details-table table">
|
|
<tbody>
|
|
<tr>
|
|
<td>Image</td>
|
|
<td
|
|
><a ui-sref="docker.images.image({ id: container.Image, nodeName: nodeName })">{{ container.Config.Image }}@{{ container.Image }}</a></td
|
|
>
|
|
</tr>
|
|
<tr ng-if="portBindings.length > 0">
|
|
<td>Port configuration</td>
|
|
<td>
|
|
<div ng-repeat="portMapping in portBindings">
|
|
{{ portMapping.host }}
|
|
<pr-icon icon="'arrow-right'"></pr-icon>
|
|
{{ portMapping.container }}
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>CMD</td>
|
|
<td
|
|
><code>{{ container.Config.Cmd | command }}</code></td
|
|
>
|
|
</tr>
|
|
<tr>
|
|
<td>ENTRYPOINT</td>
|
|
<td
|
|
><code>{{ container.Config.Entrypoint ? (container.Config.Entrypoint | command) : 'null' }}</code></td
|
|
>
|
|
</tr>
|
|
<tr>
|
|
<td>ENV</td>
|
|
<td>
|
|
<table class="table-bordered table-condensed table">
|
|
<tr ng-repeat="var in container.Config.Env track by $index">
|
|
<td>{{ var|key: '=' }}</td>
|
|
<td>{{ var|value: '=' }}</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
<tr ng-if="!(container.Config.Labels | emptyobject)">
|
|
<td>Labels</td>
|
|
<td>
|
|
<table class="table-bordered table-condensed table">
|
|
<tr ng-repeat="(k, v) in container.Config.Labels">
|
|
<td>{{ k }}</td>
|
|
<td>{{ v }}</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Restart policies</td>
|
|
<td>
|
|
<container-restart-policy
|
|
ng-if="container"
|
|
environment-id="endpoint.Id"
|
|
container-id="container.Id"
|
|
node-name="nodeName"
|
|
name="container.HostConfig.RestartPolicy.Name"
|
|
maximum-retry-count="container.HostConfig.RestartPolicy.MaximumRetryCount"
|
|
on-update-success="(onUpdateRestartPolicySuccess)"
|
|
>
|
|
</container-restart-policy>
|
|
</td>
|
|
</tr>
|
|
<tr ng-if="!(container.HostConfig.Sysctls | emptyobject)">
|
|
<td>Sysctls</td>
|
|
<td>
|
|
<table class="table-bordered table-condensed table">
|
|
<tr ng-repeat="(k, v) in container.HostConfig.Sysctls">
|
|
<td>{{ k }}</td>
|
|
<td>{{ v }}</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
<tr ng-if="container.HostConfig.DeviceRequests.length">
|
|
<td>GPUS</td>
|
|
<td>{{ computeDockerGPUCommand() }}</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</rd-widget-body>
|
|
</rd-widget>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row" ng-if="container.Mounts.length > 0">
|
|
<div class="col-lg-12 col-md-12 col-xs-12">
|
|
<rd-widget>
|
|
<rd-widget-header icon="database" title-text="Volumes"></rd-widget-header>
|
|
<rd-widget-body classes="no-padding">
|
|
<table class="table" data-cy="container-volumes-table">
|
|
<thead>
|
|
<tr>
|
|
<th>Host/volume</th>
|
|
<th>Path in container</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr ng-repeat="vol in container.Mounts">
|
|
<td ng-if="vol.Type === 'bind'">{{ vol.Source }}</td>
|
|
<td ng-if="vol.Type === 'volume'"
|
|
><a ui-sref="docker.volumes.volume({ id: vol.Name, nodeName: nodeName })">{{ vol.Name }}</a></td
|
|
>
|
|
<td>{{ vol.Destination }}</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</rd-widget-body>
|
|
</rd-widget>
|
|
</div>
|
|
</div>
|
|
|
|
<docker-container-networks-datatable ng-if="container.NetworkSettings.Networks" dataset="container.NetworkSettings.Networks" container="container" node-name="nodeName">
|
|
</docker-container-networks-datatable>
|