镜像构建历史
# 2026-03-11 20:01:26 0.00B 添加元数据标签
LABEL devcontainer.metadata=[ {"id":"ghcr.io/devcontainers/features/common-utils:2"}, {"id":"ghcr.io/devcontainers/features/git:1","customizations":{"vscode":{"settings":{"github.copilot.chat.codeGeneration.instructions":[{"text":"This dev container includes an up-to-date version of Git, built from source as needed, pre-installed and available on the `PATH`."}]}}}}, {"id":"ghcr.io/devcontainers/features/node:1","customizations":{"vscode":{"extensions":["dbaeumer.vscode-eslint"],"settings":{"github.copilot.chat.codeGeneration.instructions":[{"text":"This dev container includes `node`, `npm` and `eslint` pre-installed and available on the `PATH` for Node.js and JavaScript development."}]}}}}, {"customizations":{"vscode":{"extensions":["dbaeumer.vscode-eslint"]}},"remoteUser":"node"} ]
# 2026-03-11 20:01:26 0.00B 指定运行容器时使用的用户
USER root
# 2026-03-11 20:01:26 0.00B 定义构建参数
ARG _DEV_CONTAINERS_IMAGE_USER=root
# 2026-03-11 20:01:26 32.55MB 执行命令并创建新的镜像层
RUN |2 USERNAME=node NPM_GLOBAL=/usr/local/share/npm-global /bin/sh -c cp -ar /tmp/build-features-src/node_2 /tmp/dev-container-features && chmod -R 0755 /tmp/dev-container-features/node_2 && cd /tmp/dev-container-features/node_2 && chmod +x ./devcontainer-features-install.sh && ./devcontainer-features-install.sh && rm -rf /tmp/dev-container-features/node_2 # buildkit
# 2026-03-11 20:01:23 0.00B 设置环境变量 PATH
ENV PATH=/usr/local/share/nvm/current/bin:/usr/local/share/npm-global/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# 2026-03-11 20:01:23 0.00B 设置环境变量 NVM_SYMLINK_CURRENT
ENV NVM_SYMLINK_CURRENT=true
# 2026-03-11 20:01:23 0.00B 设置环境变量 NVM_DIR
ENV NVM_DIR=/usr/local/share/nvm
# 2026-03-11 20:01:23 147.88MB 执行命令并创建新的镜像层
RUN |2 USERNAME=node NPM_GLOBAL=/usr/local/share/npm-global /bin/sh -c cp -ar /tmp/build-features-src/git_1 /tmp/dev-container-features && chmod -R 0755 /tmp/dev-container-features/git_1 && cd /tmp/dev-container-features/git_1 && chmod +x ./devcontainer-features-install.sh && ./devcontainer-features-install.sh && rm -rf /tmp/dev-container-features/git_1 # buildkit
# 2026-03-11 19:58:47 131.27MB 执行命令并创建新的镜像层
RUN |2 USERNAME=node NPM_GLOBAL=/usr/local/share/npm-global /bin/sh -c cp -ar /tmp/build-features-src/common-utils_0 /tmp/dev-container-features && chmod -R 0755 /tmp/dev-container-features/common-utils_0 && cd /tmp/dev-container-features/common-utils_0 && chmod +x ./devcontainer-features-install.sh && ./devcontainer-features-install.sh && rm -rf /tmp/dev-container-features/common-utils_0 # buildkit
# 2026-03-11 19:58:30 95.00B 执行命令并创建新的镜像层
RUN |2 USERNAME=node NPM_GLOBAL=/usr/local/share/npm-global /bin/sh -c echo "_CONTAINER_USER_HOME=$( (command -v getent >/dev/null 2>&1 && getent passwd 'root' || grep -E '^root|^[^:]*:[^:]*:root:' /etc/passwd || true) | cut -d: -f6)" >> /tmp/dev-container-features/devcontainer-features.builtin.env && echo "_REMOTE_USER_HOME=$( (command -v getent >/dev/null 2>&1 && getent passwd 'node' || grep -E '^node|^[^:]*:[^:]*:node:' /etc/passwd || true) | cut -d: -f6)" >> /tmp/dev-container-features/devcontainer-features.builtin.env # buildkit
# 2026-03-11 19:58:30 39.00B 复制新文件或目录到容器中
COPY /tmp/build-features/ /tmp/dev-container-features # buildkit
# 2026-03-11 19:58:30 0.00B 执行命令并创建新的镜像层
RUN |2 USERNAME=node NPM_GLOBAL=/usr/local/share/npm-global /bin/sh -c mkdir -p /tmp/dev-container-features # buildkit
# 2026-03-11 19:58:30 0.00B 指定运行容器时使用的用户
USER root
# 2026-03-11 19:58:30 0.00B 添加元数据标签
LABEL dev.containers.timestamp=Wed, 11 Mar 2026 11:57:17 GMT
# 2026-03-11 19:58:30 0.00B 添加元数据标签
LABEL dev.containers.source=https://github.com/devcontainers/images
# 2026-03-11 19:58:30 0.00B 添加元数据标签
LABEL dev.containers.release=v0.4.25
# 2026-03-11 19:58:30 0.00B 添加元数据标签
LABEL dev.containers.variant=22-trixie
# 2026-03-11 19:58:30 0.00B 添加元数据标签
LABEL dev.containers.id=javascript-node
# 2026-03-11 19:58:30 0.00B 添加元数据标签
LABEL version=4.0.9
# 2026-03-11 19:58:30 307.00B 复制新文件或目录到容器中
COPY meta.env /usr/local/etc/vscode-dev-containers/ # buildkit
# 2026-03-11 19:58:30 20.99KB 执行命令并创建新的镜像层
RUN |2 USERNAME=node NPM_GLOBAL=/usr/local/share/npm-global /bin/sh -c /tmp/install-subversion.sh && rm -f /tmp/install-subversion.sh # buildkit
# 2026-03-11 19:58:30 1.40KB 执行命令并创建新的镜像层
RUN |2 USERNAME=node NPM_GLOBAL=/usr/local/share/npm-global /bin/sh -c chmod +x /tmp/install-subversion.sh # buildkit
# 2026-03-11 19:58:30 1.40KB 复制新文件或目录到容器中
COPY ./scripts/install-subversion.sh /tmp/install-subversion.sh # buildkit
# 2026-03-11 19:58:30 20.86MB 执行命令并创建新的镜像层
RUN |2 USERNAME=node NPM_GLOBAL=/usr/local/share/npm-global /bin/sh -c if ! cat /etc/group | grep -e "^npm:" > /dev/null 2>&1; then groupadd -r npm; fi && usermod -a -G npm ${USERNAME} && umask 0002 && mkdir -p ${NPM_GLOBAL} && touch /usr/local/etc/npmrc && chown ${USERNAME}:npm ${NPM_GLOBAL} /usr/local/etc/npmrc && chmod g+s ${NPM_GLOBAL} && npm config -g set prefix ${NPM_GLOBAL} && su ${USERNAME} -c "npm config -g set prefix ${NPM_GLOBAL}" && su ${USERNAME} -c "umask 0002 && npm install -g eslint" && npm cache clean --force > /dev/null 2>&1 # buildkit
# 2026-03-11 19:58:30 0.00B 设置环境变量 PATH
ENV PATH=/usr/local/share/npm-global/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# 2026-03-11 19:58:30 0.00B 定义构建参数
ARG NPM_GLOBAL=/usr/local/share/npm-global
# 2026-03-11 19:58:30 0.00B 定义构建参数
ARG USERNAME=node
# 2026-03-06 05:11:33 0.00B 设置默认要执行的命令
CMD ["node"]
# 2026-03-06 05:11:33 0.00B 配置容器启动时运行的命令
ENTRYPOINT ["docker-entrypoint.sh"]
# 2026-03-06 05:11:33 388.00B 复制新文件或目录到容器中
COPY docker-entrypoint.sh /usr/local/bin/ # buildkit
# 2026-03-06 05:11:33 5.34MB 执行命令并创建新的镜像层
RUN /bin/sh -c set -ex && export GNUPGHOME="$(mktemp -d)" && for key in 6A010C5166006599AA17F08146C2130DFD2497F5 ; do { gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$key" && gpg --batch --fingerprint "$key"; } || { gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key" && gpg --batch --fingerprint "$key"; } ; done && curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz" && curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz.asc" && gpg --batch --verify yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz && gpgconf --kill all && rm -rf "$GNUPGHOME" && mkdir -p /opt && tar -xzf yarn-v$YARN_VERSION.tar.gz -C /opt/ && ln -s /opt/yarn-v$YARN_VERSION/bin/yarn /usr/local/bin/yarn && ln -s /opt/yarn-v$YARN_VERSION/bin/yarnpkg /usr/local/bin/yarnpkg && rm yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz && yarn --version && rm -rf /tmp/* # buildkit
# 2026-03-06 05:11:31 0.00B 设置环境变量 YARN_VERSION
ENV YARN_VERSION=1.22.22
# 2026-03-06 05:11:31 197.20MB 执行命令并创建新的镜像层
RUN /bin/sh -c ARCH= && dpkgArch="$(dpkg --print-architecture)" && case "${dpkgArch##*-}" in amd64) ARCH='x64';; ppc64el) ARCH='ppc64le';; s390x) ARCH='s390x';; arm64) ARCH='arm64';; armhf) ARCH='armv7l';; i386) ARCH='x86';; *) echo "unsupported architecture"; exit 1 ;; esac && export GNUPGHOME="$(mktemp -d)" && set -ex && for key in 5BE8A3F6C8A5C01D106C0AD820B1A390B168D356 DD792F5973C6DE52C432CBDAC77ABFA00DDBF2B7 CC68F5A3106FF448322E48ED27F5E38D5B0A215F 8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600 890C08DB8579162FEE0DF9DB8BEAB4DFCF555EF4 C82FA3AE1CBEDC6BE46B9360C43CEC45C17AB93C 108F52B48DB57BB0CC439B2997B01419BD92F80A A363A499291CBBC940DD62E41F10027AF002F8B0 ; do { gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$key" && gpg --batch --fingerprint "$key"; } || { gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key" && gpg --batch --fingerprint "$key"; } ; done && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH.tar.xz" && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" && gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc && gpgconf --kill all && rm -rf "$GNUPGHOME" && grep " node-v$NODE_VERSION-linux-$ARCH.tar.xz\$" SHASUMS256.txt | sha256sum -c - && tar -xJf "node-v$NODE_VERSION-linux-$ARCH.tar.xz" -C /usr/local --strip-components=1 --no-same-owner && rm "node-v$NODE_VERSION-linux-$ARCH.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt && ln -s /usr/local/bin/node /usr/local/bin/nodejs && node --version && npm --version && rm -rf /tmp/* # buildkit
# 2026-03-06 05:11:31 0.00B 设置环境变量 NODE_VERSION
ENV NODE_VERSION=22.22.1
# 2026-03-06 05:11:21 8.94KB 执行命令并创建新的镜像层
RUN /bin/sh -c groupadd --gid 1000 node && useradd --uid 1000 --gid node --shell /bin/bash --create-home node # buildkit
# 2026-02-25 04:39:37 655.82MB 执行命令并创建新的镜像层
RUN /bin/sh -c set -ex; apt-get update; apt-get install -y --no-install-recommends autoconf automake bzip2 default-libmysqlclient-dev dpkg-dev file g++ gcc imagemagick libbz2-dev libc6-dev libcurl4-openssl-dev libdb-dev libevent-dev libffi-dev libgdbm-dev libglib2.0-dev libgmp-dev libjpeg-dev libkrb5-dev liblzma-dev libmagickcore-dev libmagickwand-dev libmaxminddb-dev libncurses5-dev libncursesw5-dev libpng-dev libpq-dev libreadline-dev libsqlite3-dev libssl-dev libtool libwebp-dev libxml2-dev libxslt-dev libyaml-dev make patch unzip xz-utils zlib1g-dev ; apt-get dist-clean # buildkit
# 2026-02-25 04:04:10 184.88MB 执行命令并创建新的镜像层
RUN /bin/sh -c set -eux; apt-get update; apt-get install -y --no-install-recommends git mercurial openssh-client subversion procps ; apt-get dist-clean # buildkit
# 2026-02-25 03:20:02 60.17MB 执行命令并创建新的镜像层
RUN /bin/sh -c set -eux; apt-get update; apt-get install -y --no-install-recommends ca-certificates curl gnupg netbase sq wget ; apt-get dist-clean # buildkit
# 2026-02-23 08:00:00 119.86MB
# debian.sh --arch 'amd64' out/ 'trixie' '@1771804800'
镜像信息
{
"Id": "sha256:f0bf2a1b74cf68e96eb638d1c3baff52cd4fd46376f15d1e6e2fbe8c827fa0c1",
"RepoTags": [
"mcr.microsoft.com/devcontainers/javascript-node:22",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/mcr.microsoft.com/devcontainers/javascript-node:22"
],
"RepoDigests": [
"mcr.microsoft.com/devcontainers/javascript-node@sha256:a01a914a47f9693114101e24e1cdede1fa76a286f03ee98d11a373a64dbd0e5e",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/mcr.microsoft.com/devcontainers/javascript-node@sha256:06148b8dd1c3459cbbcee31bc186381643a3a607140af74f3aeda6f1eae08341"
],
"Parent": "",
"Comment": "buildkit.dockerfile.v0",
"Created": "2026-03-11T12:01:26.323477515Z",
"Container": "",
"ContainerConfig": null,
"DockerVersion": "",
"Author": "",
"Config": {
"Hostname": "",
"Domainname": "",
"User": "root",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/share/nvm/current/bin:/usr/local/share/npm-global/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"NODE_VERSION=22.22.1",
"YARN_VERSION=1.22.22",
"NVM_DIR=/usr/local/share/nvm",
"NVM_SYMLINK_CURRENT=true"
],
"Cmd": [
"node"
],
"Image": "",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": [
"docker-entrypoint.sh"
],
"OnBuild": null,
"Labels": {
"dev.containers.id": "javascript-node",
"dev.containers.release": "v0.4.25",
"dev.containers.source": "https://github.com/devcontainers/images",
"dev.containers.timestamp": "Wed, 11 Mar 2026 11:57:17 GMT",
"dev.containers.variant": "22-trixie",
"devcontainer.metadata": "[ {\"id\":\"ghcr.io/devcontainers/features/common-utils:2\"}, {\"id\":\"ghcr.io/devcontainers/features/git:1\",\"customizations\":{\"vscode\":{\"settings\":{\"github.copilot.chat.codeGeneration.instructions\":[{\"text\":\"This dev container includes an up-to-date version of Git, built from source as needed, pre-installed and available on the `PATH`.\"}]}}}}, {\"id\":\"ghcr.io/devcontainers/features/node:1\",\"customizations\":{\"vscode\":{\"extensions\":[\"dbaeumer.vscode-eslint\"],\"settings\":{\"github.copilot.chat.codeGeneration.instructions\":[{\"text\":\"This dev container includes `node`, `npm` and `eslint` pre-installed and available on the `PATH` for Node.js and JavaScript development.\"}]}}}}, {\"customizations\":{\"vscode\":{\"extensions\":[\"dbaeumer.vscode-eslint\"]}},\"remoteUser\":\"node\"} ]",
"version": "4.0.9"
}
},
"Architecture": "amd64",
"Os": "linux",
"Size": 1555865942,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/78a3d1ecc6cc892b6f3f80e7e34a3f7feeaff5b8148b9eba9933f6f2073df9f4/diff:/var/lib/docker/overlay2/44807fa07cf79ecddbcd8a20c89c180778342e4b1a7caae59a7880d9494b320c/diff:/var/lib/docker/overlay2/95806eee4f1a6b1e4c1d8fec586a9d30dbc88cf7acf51eaab4e0fe96de6ebbbe/diff:/var/lib/docker/overlay2/4e4ff11886065946f489b96a491fe8c8ea57379de97bb94e955b0ceb723545f1/diff:/var/lib/docker/overlay2/5d15c78017d0ddc3aeb0fb8f977f642f7287a982374ae4ae9596faaf3abebc27/diff:/var/lib/docker/overlay2/e664a1dcaf67dfb1accf682449b50788b25d5f2bd29a96b76861b575d2154a70/diff:/var/lib/docker/overlay2/0f42d37dd019c1566e731b3e8552cd0b59805086ae738dae32c131e63614ffa4/diff:/var/lib/docker/overlay2/ab6684927bf8bcca2a888c3f6b797df24d9153692b7453494f8c077059b5d38f/diff:/var/lib/docker/overlay2/75a99efe3ecccbbecd6c9aad99e3652d7c1ccc2ad7bab2d4ddb615142f245bb7/diff:/var/lib/docker/overlay2/48376143d030d4e03de7f6bff5ce71a0b20a1a93008be028024624dbe7d09c4d/diff:/var/lib/docker/overlay2/803ad5cd1e6d5c66407109253f5acfad67dbff21b9b3e264a536b71b12e79ab3/diff:/var/lib/docker/overlay2/70816ce30998f1679d8ce9fd9ba17a97ea05fcdb7161b9b7830abc762e532dd9/diff:/var/lib/docker/overlay2/8168e62c51a189e1e9bba598718ae58b67e2f7c12bcfdd1520835023093a6d06/diff:/var/lib/docker/overlay2/8ff41e6fb615d184c2fd9b257eda89f14c923fa3151f70b33903c7ec89c17650/diff:/var/lib/docker/overlay2/67724cff9ee0051d04d4f5d65b0bf32d0c70cab07b0f09c5040ec66f37abdc3f/diff:/var/lib/docker/overlay2/af9f55bc97e09a4a9d4dbf270d5fe41768a5d2f4cd19fc5aa0af5fde15d45a61/diff:/var/lib/docker/overlay2/b0a2b41492d7149120741b6386f479de94b6e121332cbce4776070cd7f0de406/diff:/var/lib/docker/overlay2/07b43fcfe4640c76ca69d311cbc2efde34c2751ef6a3b4f78b829677089cc95a/diff",
"MergedDir": "/var/lib/docker/overlay2/0d47aa8daa87e24e8f45a601d78b4012f513d4ca3c433d3c493a8437587e6b54/merged",
"UpperDir": "/var/lib/docker/overlay2/0d47aa8daa87e24e8f45a601d78b4012f513d4ca3c433d3c493a8437587e6b54/diff",
"WorkDir": "/var/lib/docker/overlay2/0d47aa8daa87e24e8f45a601d78b4012f513d4ca3c433d3c493a8437587e6b54/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:a541a5ccaa301e7fac682a49beced877c74cb57f094a6f0527b36d8a0e7e8ded",
"sha256:7fe06297fe28928ada6f9e5363902e4c740b4dcab4b00ca39466592ff1b1162f",
"sha256:481dc13bd3b08b67edceaaefec94b6e4e33598e0c7074bd7e0ea57f8fc2a1653",
"sha256:84d9300b8400a7a816dc159268490424bc4a578d5b5d6e51946e9488f759b986",
"sha256:d8466f58e8d8cd03e1166ca0d67673c1fa9d3c7972d2a9cb96bb3e8ff7a8cd9f",
"sha256:d9e11afad249622f6911adec9600fcf71a391221bfcd59576388125921291b6a",
"sha256:0856ff36a4e4d9b702cf0b1e6f62900689fe65c1209131a85f2f87223bd1cd5e",
"sha256:29d44603f4d29a406c332a90455127556ded014ed0dbde60a381dcdf21f041b0",
"sha256:2e05d568ac0f4349349ce33e5e8eabb68335843f66c39dcaf58a8e24ec867892",
"sha256:cbed465bd24c9a90c7a215485dd4079155647ae24447b80b27d1555e2f7c5550",
"sha256:cdb44a84a0aaefb1f2ccc350b2fe3028d720a211ca9764422b43abeb94c4458e",
"sha256:7967826656b773d8eaf4be2b41c8d09bb6ad7224c513d03c1dfff7496f461c06",
"sha256:894a2076342fe94a5dc924294a4ddff687f0ed6e715e15472ce633cca10f7095",
"sha256:0aa737ebf90f607810fe34d40a61fc0085f1bb9ee5d887c4ad31106f13f32696",
"sha256:71e53b79028342bbacab301f54e026896903869787ad0d4331ef1ed79bb70b8a",
"sha256:fae220f5c03e74b0a9f2b1eb6d6f482e3e1d16cc9025de588fc689d3a15a1bfd",
"sha256:e91cb01d5a63f28a6e89ed57d52ab5a0ab6c8a092891c6e664147fad4987768d",
"sha256:a11e064b9e485748c5f72d8f3963da914527c78773c549f643e985f61bd2e4c7",
"sha256:41ea5dca9dfa6a614000168520ba245c6a3ffda2145343bc13b02bf1e5dfb79d"
]
},
"Metadata": {
"LastTagTime": "2026-03-23T14:45:42.165715313+08:00"
}
}