microsoft / microsoft/vscode-remote-release
dev-containers: include output from Annotations as an extension of Labels for running containers
Nobody has claimed this yet.
- Dominant language
- Dockerfile
- Stars
- 4.2k
- Forks
- 470
- Avg merge
- 1d 1h
- Merged PRs (30d)
- 1
Description
I, and a lot of Linux Fedora OSTree / zero trust desktop users, make use of podman and distrobox to create mutable environments for package management, etc. These use podman which emulates a majority of the docker primitives. Out of the box this works as expected - however, distrobox performs a set of additional UX actions that make it transparent to the end user the container they're running (container runs as root, but entering the container does proper uid/gid maps to the systems user account as well as mount HOME and other appropriate directories).
Due to how this runs, and given most "toolbox" containers are actually container images like docker.io/library/ubuntu, etc it's not possible to reliably use the label devcontainer.metadata. However, podman offers the ability to add Annotations to running containers and present that information in the inspect output. What this feature request is asking for is to check if an optional Config.Annotations key is available (at the same level as Labels is found) and merge those values into the Labels keys before evaluating any devcontainer.metadata. I've included an example of the docker inspect command run by Dev Containers 0.295.0 in VS Code 1.79.2
This would only affect using Dev Containers to connect to an already running container.
Snippet of Config showing both Labels and Annotations
"Labels": {
"com.github.containers.toolbox": "true",
"io.artifacthub.package.readme-url": "https://raw.githubusercontent.com/ublue-os/boxkit/main/README.md",
"io.buildah.version": "1.23.1",
"maintainer": "jorge.castro@gmail.com",
"manager": "distrobox",
"name": "ubuntu-toolbox",
"org.opencontainers.image.created": "2023-06-20T22:24:26.642Z",
"org.opencontainers.image.description": "A familiar(ish) Ubuntu desktop for Fedora Silverblue",
"org.opencontainers.image.licenses": "Apache-2.0",
"org.opencontainers.image.ref.name": "ubuntu",
"org.opencontainers.image.revision": "93bde6348265f15e73cb2f2698c56d2aae8c06ba",
"org.opencontainers.image.source": "https://github.com/ublue-os/bluefin",
"org.opencontainers.image.title": "bluefin",
"org.opencontainers.image.url": "https://github.com/ublue-os/bluefin",
"org.opencontainers.image.version": "nightly",
"summary": "A cloud-native terminal experience",
"usage": "This image is meant to be used with the toolbox or distrobox command",
"version": "22.04"
},
"Annotations": {
"io.container.manager": "libpod",
"io.podman.annotations.label": "disable",
"io.podman.annotations.privileged": "TRUE",
"org.opencontainers.image.stopSignal": "15",
"run.oci.keep_original_groups": "1",
"devcontainer.metadata.remoteUser": "marco",
},
Below is the full command output of the docker inspect command on a podman system running a distrobox created container.
~ $ docker inspect ubuntu
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
[
{
"Id": "f8eb02dd9c6e639da4fac8a7496e4a72677c1e671207aee154b47f91c35a0b05",
"Created": "2023-06-20T22:56:52.667359334-04:00",
"Path": "/usr/bin/entrypoint",
"Args": [
"-v",
"--name",
"marco",
"--user",
"1000",
"--group",
"1000",
"--home",
"/var/home/marco",
"--init",
"0",
"--pre-init-hooks",
"",
"--",
""
],
"State": {
"OciVersion": "1.1.0-rc.1",
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 113736,
"ConmonPid": 113734,
"ExitCode": 0,
"Error": "",
"StartedAt": "2023-06-21T11:33:23.191009439-04:00",
"FinishedAt": "2023-06-21T11:12:18.04886986-04:00",
"Health": {
"Status": "",
"FailingStreak": 0,
"Log": null
},
"CgroupPath": "/user.slice/user-1000.slice/user@1000.service/user.slice/libpod-f8eb02dd9c6e639da4fac8a7496e4a72677c1e671207aee154b47f91c35a0b05.scope",
"CheckpointedAt": "0001-01-01T00:00:00Z",
"RestoredAt": "0001-01-01T00:00:00Z"
},
"Image": "009724e826a495baf226dd98e983f43ca10b24c0b87f186ab2fe458a1406cd21",
"ImageDigest": "sha256:f534a81113676c7d19748c36d2a37ea6a5525536c586326eea0d4a1036ab3f61",
"ImageName": "ghcr.io/ublue-os/ubuntu-toolbox:latest",
"Rootfs": "",
"Pod": "",
"ResolvConfPath": "/run/user/1000/containers/overlay-containers/f8eb02dd9c6e639da4fac8a7496e4a72677c1e671207aee154b47f91c35a0b05/userdata/resolv.conf",
"HostnamePath": "/run/user/1000/containers/overlay-containers/f8eb02dd9c6e639da4fac8a7496e4a72677c1e671207aee154b47f91c35a0b05/userdata/hostname",
"HostsPath": "/run/user/1000/containers/overlay-containers/f8eb02dd9c6e639da4fac8a7496e4a72677c1e671207aee154b47f91c35a0b05/userdata/hosts",
"StaticDir": "/var/home/marco/.local/share/containers/storage/overlay-containers/f8eb02dd9c6e639da4fac8a7496e4a72677c1e671207aee154b47f91c35a0b05/userdata",
"OCIConfigPath": "/var/home/marco/.local/share/containers/storage/overlay-containers/f8eb02dd9c6e639da4fac8a7496e4a72677c1e671207aee154b47f91c35a0b05/userdata/config.json",
"OCIRuntime": "crun",
"ConmonPidFile": "/run/user/1000/containers/overlay-containers/f8eb02dd9c6e639da4fac8a7496e4a72677c1e671207aee154b47f91c35a0b05/userdata/conmon.pid",
"PidFile": "/run/user/1000/containers/overlay-containers/f8eb02dd9c6e639da4fac8a7496e4a72677c1e671207aee154b47f91c35a0b05/userdata/pidfile",
"Name": "ubuntu",
"RestartCount": 0,
"Driver": "overlay",
"MountLabel": "system_u:object_r:container_file_t:s0:c1022,c1023",
"ProcessLabel": "",
"AppArmorProfile": "",
"EffectiveCaps": [
"CAP_AUDIT_CONTROL",
"CAP_AUDIT_READ",
"CAP_AUDIT_WRITE",
"CAP_BLOCK_SUSPEND",
"CAP_BPF",
"CAP_CHECKPOINT_RESTORE",
"CAP_CHOWN",
"CAP_DAC_OVERRIDE",
"CAP_DAC_READ_SEARCH",
"CAP_FOWNER",
"CAP_FSETID",
"CAP_IPC_LOCK",
"CAP_IPC_OWNER",
"CAP_KILL",
"CAP_LEASE",
"CAP_LINUX_IMMUTABLE",
"CAP_MAC_ADMIN",
"CAP_MAC_OVERRIDE",
"CAP_MKNOD",
"CAP_NET_ADMIN",
"CAP_NET_BIND_SERVICE",
"CAP_NET_BROADCAST",
"CAP_NET_RAW",
"CAP_PERFMON",
"CAP_SETFCAP",
"CAP_SETGID",
"CAP_SETPCAP",
"CAP_SETUID",
"CAP_SYSLOG",
"CAP_SYS_ADMIN",
"CAP_SYS_BOOT",
"CAP_SYS_CHROOT",
"CAP_SYS_MODULE",
"CAP_SYS_NICE",
"CAP_SYS_PACCT",
"CAP_SYS_PTRACE",
"CAP_SYS_RAWIO",
"CAP_SYS_RESOURCE",
"CAP_SYS_TIME",
"CAP_SYS_TTY_CONFIG",
"CAP_WAKE_ALARM"
],
"BoundingCaps": [
"CAP_AUDIT_CONTROL",
"CAP_AUDIT_READ",
"CAP_AUDIT_WRITE",
"CAP_BLOCK_SUSPEND",
"CAP_BPF",
"CAP_CHECKPOINT_RESTORE",
"CAP_CHOWN",
"CAP_DAC_OVERRIDE",
"CAP_DAC_READ_SEARCH",
"CAP_FOWNER",
"CAP_FSETID",
"CAP_IPC_LOCK",
"CAP_IPC_OWNER",
"CAP_KILL",
"CAP_LEASE",
"CAP_LINUX_IMMUTABLE",
"CAP_MAC_ADMIN",
"CAP_MAC_OVERRIDE",
"CAP_MKNOD",
"CAP_NET_ADMIN",
"CAP_NET_BIND_SERVICE",
"CAP_NET_BROADCAST",
"CAP_NET_RAW",
"CAP_PERFMON",
"CAP_SETFCAP",
"CAP_SETGID",
"CAP_SETPCAP",
"CAP_SETUID",
"CAP_SYSLOG",
"CAP_SYS_ADMIN",
"CAP_SYS_BOOT",
"CAP_SYS_CHROOT",
"CAP_SYS_MODULE",
"CAP_SYS_NICE",
"CAP_SYS_PACCT",
"CAP_SYS_PTRACE",
"CAP_SYS_RAWIO",
"CAP_SYS_RESOURCE",
"CAP_SYS_TIME",
"CAP_SYS_TTY_CONFIG",
"CAP_WAKE_ALARM"
],
"ExecIDs": [
"7ef25334fca5faaf4d3efb521fce5ca9829d9367bb86abd4ea99b806506065b9",
"fe678b34649432545bb19de73d463039d4354568c0028a6b46cd4e06b16cc07e",
"09db5e64af11db57875277e9fb0440f1f74e804a4e5f551ca07bcddad0db54d4",
"7cbb99e1bc1114b72c4c60f60d421e907069d3e63333ce5e833555589ad9a9cc",
"8d9bf241566851e1738ad818ff61e3fa305cbe407fe175c9fa96a337634d2947",
"9fea63ded38effe70747b1cedbd11377e0f6aa46fb6e74415001165ac7d08135",
"a822d4d37c3830aa0b913131d5f66ae48d9699b76deb3bbb1e42a082f6ab72de",
"50e944700aa3c0af1c83de1dce7dcdf1792f1b3616e46e1cb55fe4b7915cf982",
"7e975aa91812a4665a499702189892dc2af7fd1a44ab3fbc0c4f077fe338cd18"
],
"GraphDriver": {
"Name": "overlay",
"Data": {
"LowerDir": "/var/home/marco/.local/share/containers/storage/overlay/a6ee2dca1f674ca9c5ce9d71c2ed45bf4b6567db17f64e1bd73aa0b4df161066/diff:/var/home/marco/.local/share/containers/storage/overlay/9edd7520ec49dd8568608a5ba71619749c5d1340526d9476d87a79347b29953f/diff:/var/home/marco/.local/share/containers/storage/overlay/b381e7c7943e96245b5808907a51de7cdab773dbbb8aac5ccd3392af7156e277/diff:/var/home/marco/.local/share/containers/storage/overlay/8f1c4a1ebbc4c84e7e53de5833b3a297011b18befc1f2ed29a7e70fb349a638f/diff:/var/home/marco/.local/share/containers/storage/overlay/630c560e98fa92797381a81e0a568b6b34414e09e6243a6f911dd374d401a978/diff:/var/home/marco/.local/share/containers/storage/overlay/f5eb23ebf19f653917d320cd9d4cc65783858fa1bca6652ab9976df8ef188339/diff:/var/home/marco/.local/share/containers/storage/overlay/850d33f1eeae1362d806718c9acbb36dfc961156b3102556474c057552d70370/diff:/var/home/marco/.local/share/containers/storage/overlay/f606c62fe07ff9f7a9ed57ce6aa6f1eca848c6bf03ef7a174f9bc6d9f31d851e/diff:/var/home/marco/.local/share/containers/storage/overlay/18aef69f315dc2d10d9a1f297f9ea414264270d7525aa6bb3927a4c36fc1eecb/diff:/var/home/marco/.local/share/containers/storage/overlay/cdd7c73923174e45ea648d66996665c288e1b17a0f45efdbeca860f6dafdf731/diff",
"MergedDir": "/var/home/marco/.local/share/containers/storage/overlay/50a755db74c0c8742fd794aa1c3ac72c70f9e951396954c914b120568e07faa7/merged",
"UpperDir": "/var/home/marco/.local/share/containers/storage/overlay/50a755db74c0c8742fd794aa1c3ac72c70f9e951396954c914b120568e07faa7/diff",
"WorkDir": "/var/home/marco/.local/share/containers/storage/overlay/50a755db74c0c8742fd794aa1c3ac72c70f9e951396954c914b120568e07faa7/work"
}
},
"Mounts": [
{
"Type": "volume",
"Name": "30f5efc90bc53050156e8713ec1881f14f22c62d0b8231393b192292f14192a9",
"Source": "/var/home/marco/.local/share/containers/storage/volumes/30f5efc90bc53050156e8713ec1881f14f22c62d0b8231393b192292f14192a9/_data",
"Destination": "/sys/fs/selinux",
"Driver": "local",
"Mode": "",
"Options": [
"nosuid",
"nodev",
"rbind"
],
"RW": true,
"Propagation": "rprivate"
},
{
"Type": "volume",
"Name": "4e11a5608a22f573e765e4bf1e5d9bd4aed8750bb51fdc218b4727b3a4c4b453",
"Source": "/var/home/marco/.local/share/containers/storage/volumes/4e11a5608a22f573e765e4bf1e5d9bd4aed8750bb51fdc218b4727b3a4c4b453/_data",
"Destination": "/var/log/journal",
"Driver": "local",
"Mode": "",
"Options": [
"nosuid",
"nodev",
"rbind"
],
"RW": true,
"Propagation": "rprivate"
},
{
"Type": "bind",
"Source": "/sys",
"Destination": "/sys",
"Driver": "",
"Mode": "",
"Options": [
"noexec",
"nosuid",
"nodev",
"rbind"
],
"RW": true,
"Propagation": "rslave"
},
{
"Type": "bind",
"Source": "/tmp",
"Destination": "/tmp",
"Driver": "",
"Mode": "",
"Options": [
"nosuid",
"nodev",
"rbind"
],
"RW": true,
"Propagation": "rslave"
},
{
"Type": "bind",
"Source": "/var/home/marco",
"Destination": "/var/home/marco",
"Driver": "",
"Mode": "",
"Options": [
"rbind"
],
"RW": true,
"Propagation": "rslave"
},
{
"Type": "bind",
"Source": "/etc/hosts",
"Destination": "/etc/hosts",
"Driver": "",
"Mode": "",
"Options": [
"rbind"
],
"RW": false,
"Propagation": "rprivate"
},
{
"Type": "bind",
"Source": "/etc/localtime",
"Destination": "/etc/localtime",
"Driver": "",
"Mode": "",
"Options": [
"rbind"
],
"RW": false,
"Propagation": "rprivate"
},
{
"Type": "bind",
"Source": "/",
"Destination": "/run/host",
"Driver": "",
"Mode": "",
"Options": [
"rbind"
],
"RW": true,
"Propagation": "rslave"
},
{
"Type": "bind",
"Source": "/dev",
"Destination": "/dev",
"Driver": "",
"Mode": "",
"Options": [
"nosuid",
"rbind"
],
"RW": true,
"Propagation": "rslave"
},
{
"Type": "bind",
"Source": "devpts",
"Destination": "/dev/pts",
"Driver": "",
"Mode": "",
"Options": [],
"RW": true,
"Propagation": ""
},
{
"Type": "bind",
"Source": "/run/user/1000",
"Destination": "/run/user/1000",
"Driver": "",
"Mode": "",
"Options": [
"nosuid",
"nodev",
"rbind"
],
"RW": true,
"Propagation": "rslave"
},
{
"Type": "bind",
"Source": "/usr/bin/distrobox-init",
"Destination": "/usr/bin/entrypoint",
"Driver": "",
"Mode": "",
"Options": [
"rbind"
],
"RW": false,
"Propagation": "rprivate"
},
{
"Type": "bind",
"Source": "/usr/bin/distrobox-export",
"Destination": "/usr/bin/distrobox-export",
"Driver": "",
"Mode": "",
"Options": [
"rbind"
],
"RW": false,
"Propagation": "rprivate"
},
{
"Type": "bind",
"Source": "/etc/resolv.conf",
"Destination": "/etc/resolv.conf",
"Driver": "",
"Mode": "",
"Options": [
"nosuid",
"nodev",
"rbind"
],
"RW": false,
"Propagation": "rprivate"
},
{
"Type": "bind",
"Source": "/usr/bin/distrobox-host-exec",
"Destination": "/usr/bin/distrobox-host-exec",
"Driver": "",
"Mode": "",
"Options": [
"rbind"
],
"RW": false,
"Propagation": "rprivate"
}
],
"Dependencies": [],
"NetworkSettings": {
"EndpointID": "",
"Gateway": "",
"IPAddress": "",
"IPPrefixLen": 0,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "",
"Bridge": "",
"SandboxID": "",
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"Ports": {},
"SandboxKey": "",
"Networks": {
"host": {
"EndpointID": "",
"Gateway": "",
"IPAddress": "",
"IPPrefixLen": 0,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "",
"NetworkID": "host",
"DriverOpts": null,
"IPAMConfig": null,
"Links": null
}
}
},
"Namespace": "",
"IsInfra": false,
"IsService": false,
"Config": {
"Hostname": "ubuntu.fedora",
"Domainname": "",
"User": "root:root",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"HOME=/var/home/marco",
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"TERM=xterm",
"container=podman",
"SHELL=/bin/bash",
"HOSTNAME=ubuntu.fedora"
],
"Cmd": [
"-v",
"--name",
"marco",
"--user",
"1000",
"--group",
"1000",
"--home",
"/var/home/marco",
"--init",
"0",
"--pre-init-hooks",
"",
"--",
""
],
"Image": "ghcr.io/ublue-os/ubuntu-toolbox:latest",
"Volumes": null,
"WorkingDir": "/",
"Entrypoint": "/usr/bin/entrypoint",
"OnBuild": null,
"Labels": {
"com.github.containers.toolbox": "true",
"io.artifacthub.package.readme-url": "https://raw.githubusercontent.com/ublue-os/boxkit/main/README.md",
"io.buildah.version": "1.23.1",
"maintainer": "jorge.castro@gmail.com",
"manager": "distrobox",
"name": "ubuntu-toolbox",
"org.opencontainers.image.created": "2023-06-20T22:24:26.642Z",
"org.opencontainers.image.description": "A familiar(ish) Ubuntu desktop for Fedora Silverblue",
"org.opencontainers.image.licenses": "Apache-2.0",
"org.opencontainers.image.ref.name": "ubuntu",
"org.opencontainers.image.revision": "93bde6348265f15e73cb2f2698c56d2aae8c06ba",
"org.opencontainers.image.source": "https://github.com/ublue-os/bluefin",
"org.opencontainers.image.title": "bluefin",
"org.opencontainers.image.url": "https://github.com/ublue-os/bluefin",
"org.opencontainers.image.version": "nightly",
"summary": "A cloud-native terminal experience",
"usage": "This image is meant to be used with the toolbox or distrobox command",
"version": "22.04"
},
"Annotations": {
"io.container.manager": "libpod",
"io.podman.annotations.label": "disable",
"io.podman.annotations.privileged": "TRUE",
"org.opencontainers.image.stopSignal": "15",
"run.oci.keep_original_groups": "1",
"devcontainer.metadata.remoteUser": "marco",
},
"StopSignal": 15,
"HealthcheckOnFailureAction": "none",
"CreateCommand": [
"podman",
"create",
"--hostname",
"ubuntu.fedora",
"--ipc",
"host",
"--name",
"ubuntu",
"--network",
"host",
"--privileged",
"--security-opt",
"label=disable",
"--user",
"root:root",
"--pid",
"host",
"--label",
"manager=distrobox",
"--env",
"SHELL=/bin/bash",
"--env",
"HOME=/var/home/marco",
"--volume",
"/:/run/host:rslave",
"--volume",
"/dev:/dev:rslave",
"--volume",
"/sys:/sys:rslave",
"--volume",
"/tmp:/tmp:rslave",
"--volume",
"/usr/bin/distrobox-init:/usr/bin/entrypoint:ro",
"--volume",
"/usr/bin/distrobox-export:/usr/bin/distrobox-export:ro",
"--volume",
"/usr/bin/distrobox-host-exec:/usr/bin/distrobox-host-exec:ro",
"--volume",
"/var/home/marco:/var/home/marco:rslave",
"--volume",
"/sys/fs/selinux",
"--volume",
"/var/log/journal",
"--volume",
"/run/user/1000:/run/user/1000:rslave",
"--volume",
"/etc/hosts:/etc/hosts:ro",
"--volume",
"/etc/localtime:/etc/localtime:ro",
"--volume",
"/etc/resolv.conf:/etc/resolv.conf:ro",
"--ulimit",
"host",
"--annotation",
"run.oci.keep_original_groups=1",
"--mount",
"type=devpts,destination=/dev/pts",
"--userns",
"keep-id",
"--entrypoint",
"/usr/bin/entrypoint",
"ghcr.io/ublue-os/ubuntu-toolbox:latest",
"-v",
"--name",
"marco",
"--user",
"1000",
"--group",
"1000",
"--home",
"/var/home/marco",
"--init",
"0",
"--pre-init-hooks",
"",
"--",
""
],
"Umask": "0022",
"Timeout": 0,
"StopTimeout": 10,
"Passwd": true,
"sdNotifyMode": "container"
},
"HostConfig": {
"Binds": [
"30f5efc90bc53050156e8713ec1881f14f22c62d0b8231393b192292f14192a9:/sys/fs/selinux:rw,rprivate,nosuid,nodev,rbind",
"4e11a5608a22f573e765e4bf1e5d9bd4aed8750bb51fdc218b4727b3a4c4b453:/var/log/journal:rw,rprivate,nosuid,nodev,rbind",
"/sys:/sys:rslave,rw,noexec,nosuid,nodev,rbind",
"/tmp:/tmp:rslave,rw,nosuid,nodev,rbind",
"/var/home/marco:/var/home/marco:rslave,rw,rbind",
"/etc/hosts:/etc/hosts:ro,rprivate,rbind",
"/etc/localtime:/etc/localtime:ro,rprivate,rbind",
"/:/run/host:rslave,rw,rbind",
"/dev:/dev:rslave,rw,nosuid,rbind",
"devpts:/dev/pts",
"/run/user/1000:/run/user/1000:rslave,rw,nosuid,nodev,rbind",
"/usr/bin/distrobox-init:/usr/bin/entrypoint:ro,rprivate,rbind",
"/usr/bin/distrobox-export:/usr/bin/distrobox-export:ro,rprivate,rbind",
"/etc/resolv.conf:/etc/resolv.conf:ro,rprivate,nosuid,nodev,rbind",
"/usr/bin/distrobox-host-exec:/usr/bin/distrobox-host-exec:ro,rprivate,rbind"
],
"CgroupManager": "systemd",
"CgroupMode": "private",
"ContainerIDFile": "",
"LogConfig": {
"Type": "journald",
"Config": null,
"Path": "",
"Tag": "",
"Size": "0B"
},
"NetworkMode": "host",
"PortBindings": {},
"RestartPolicy": {
"Name": "",
"MaximumRetryCount": 0
},
"AutoRemove": false,
"VolumeDriver": "",
"VolumesFrom": null,
"CapAdd": [],
"CapDrop": [],
"Dns": [],
"DnsOptions": [],
"DnsSearch": [],
"ExtraHosts": [],
"GroupAdd": [],
"IpcMode": "host",
"Cgroup": "",
"Cgroups": "default",
"Links": null,
"OomScoreAdj": 0,
"PidMode": "host",
"Privileged": true,
"PublishAllPorts": false,
"ReadonlyRootfs": false,
"SecurityOpt": [
"label=disable"
],
"Tmpfs": {},
"UTSMode": "private",
"UsernsMode": "private",
"IDMappings": {
"UidMap": [
"0:1:1000",
"1000:0:1",
"1001:1001:64536"
],
"GidMap": [
"0:1:1000",
"1000:0:1",
"1001:1001:64536"
]
},
"ShmSize": 65536000,
"Runtime": "oci",
"ConsoleSize": [
0,
0
],
"Isolation": "",
"CpuShares": 0,
"Memory": 0,
"NanoCpus": 0,
"CgroupParent": "user.slice",
"BlkioWeight": 0,
"BlkioWeightDevice": null,
"BlkioDeviceReadBps": null,
"BlkioDeviceWriteBps": null,
"BlkioDeviceReadIOps": null,
"BlkioDeviceWriteIOps": null,
"CpuPeriod": 0,
"CpuQuota": 0,
"CpuRealtimePeriod": 0,
"CpuRealtimeRuntime": 0,
"CpusetCpus": "",
"CpusetMems": "",
"Devices": [],
"DiskQuota": 0,
"KernelMemory": 0,
"MemoryReservation": 0,
"MemorySwap": 0,
"MemorySwappiness": 0,
"OomKillDisable": false,
"PidsLimit": 2048,
"Ulimits": [
{
"Name": "RLIMIT_NOFILE",
"Soft": 524288,
"Hard": 524288
},
{
"Name": "RLIMIT_NPROC",
"Soft": 124836,
"Hard": 124836
}
],
"CpuCount": 0,
"CpuPercent": 0,
"IOMaximumIOps": 0,
"IOMaximumBandwidth": 0,
"CgroupConf": null
}
}
]
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the existing handling of container inspect output, especially Config.Labels and the optional Config.Annotations entry. Verify how devcontainer.metadata is evaluated for an already running container, then confirm that metadata supplied through Annotations is recognized without changing existing label behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- docker
- Domain
- devops
- Issue type
- Feature
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 38/100