60 lines
No EOL
1.6 KiB
JavaScript
60 lines
No EOL
1.6 KiB
JavaScript
import Docker from 'dockerode';
|
|
|
|
export var docker = new Docker();
|
|
|
|
|
|
export async function imageList() {
|
|
let images = await docker.listImages({ all: true });
|
|
return images;
|
|
}
|
|
|
|
export async function getContainer(containerID) {
|
|
let container = docker.getContainer(containerID);
|
|
return container;
|
|
}
|
|
|
|
export async function containerInspect (containerID) {
|
|
// get the container info
|
|
let container = docker.getContainer(containerID);
|
|
let info = await container.inspect();
|
|
let image = info.Config.Image;
|
|
let container_id = info.Id;
|
|
|
|
let service = info.Config.Labels['com.docker.compose.service'];
|
|
|
|
let ports_list = [];
|
|
let external = 0;
|
|
let internal = 0;
|
|
|
|
try {
|
|
for (const [key, value] of Object.entries(info.HostConfig.PortBindings)) {
|
|
let ports = {
|
|
check: 'checked',
|
|
external: value[0].HostPort,
|
|
internal: key.split('/')[0],
|
|
protocol: key.split('/')[1]
|
|
}
|
|
ports_list.push(ports);
|
|
}
|
|
} catch {}
|
|
try {
|
|
external = ports_list[0].external;
|
|
internal = ports_list[0].internal;
|
|
} catch {}
|
|
|
|
let details = {
|
|
name: info.Name.slice(1),
|
|
image: image,
|
|
service: service,
|
|
containerID: container_id,
|
|
state: info.State.Status,
|
|
external_port: external,
|
|
internal_port: internal,
|
|
ports: ports_list,
|
|
volumes: info.Mounts,
|
|
env: info.Config.Env,
|
|
labels: info.Config.Labels,
|
|
link: 'localhost',
|
|
}
|
|
return details;
|
|
} |