VS Codeのdevcontainerで指定可能なDebianイメージについて調べてみた

VS Codeのdevcontainerで指定可能なDebianイメージについて調べてみたことをご紹介します。

この記事を読んで欲しい方

  • devcontainerで指定可能なDebianのビルド元となっているDockerfileを知りたい方
  • devcontainerで指定可能なDebianに標準でどのような機能が追加されているかを知りたい方
  • devcontainerで指定可能なDebianイメージの実装を知りたい方

前提条件

本記事はHugo環境構築(devcontainer)に掲載した方法で、devcontainer環境を構築したことを前提としています。

参考情報

調べたこと

以降の情報は、2024年8月時点のものです。

devcontainer設定時に指定するDebianイメージの参照先

devcontainerを設定した際に作成されるdevcontainer.jsonから、参照先のイメージ情報を確認します。

1
2
$ grep image ./.devcontainer/devcontainer.json
        "image": "mcr.microsoft.com/devcontainers/base:bookworm",

mcr.microsoft.com/devcontainers/base:bookwormを参照していることを確認できました。
また、同様の情報をGitHub上のdevcontainerリポジトリからも読み取ることができます。

templates/src/debian/README.md at main · devcontainers/templates

This template references an image that was pre-built to automatically include needed devcontainer.json metadata.

Image: mcr.microsoft.com/devcontainers/base:debian (source)
Applies devcontainer.json contents from image: Yes (source)

Debianイメージの実装

前項のdevcontainerリポジトリ内にある以下のファイルがDebianイメージの実装となっています。
devcontainerが参照するDebianイメージの実装がどうなっているのか、確認します。

Debianベースイメージ

devcontainer.json内に、以下の記載がありました。

1
2
3
4
 "build": {
  "dockerfile": "./Dockerfile",
  "context": "."
 },

同ディレクトリ内にDockerfileがあります。
Dockerfileの内容を確認します。

1
2
ARG VARIANT="bookworm"
FROM buildpack-deps:${VARIANT}-curl

DockerfileはARG,FROMのシンプルな処理で実装されていますね。
FROMで指定されているイメージは、dockerhubで公開されているDocker Official Imageでした。

buildpack-depsbookworm-curlをビルドする際のDockerfileは以下のリポジトリで公開されています。

コードまでは記載しませんが、FROM debian:bookwormを確認できました。
Docker公式のDebianイメージまで辿りつきましたので、ここまでがベースイメージの全容のようです。

ベースイメージにたどり着くまでの一連の処理が公開されていて、怪しい処理も見受けられませんでした。
疑っているわけではありませんが、透明性が保たれていて安心感がありました。

Debianベースイメージへの機能追加

ベースイメージの実装は前項で確認できました。
devcontainer独自の実装として機能追加している処理を確認します。
具体的にはdevcontainer.json内の、featuresを確認します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
"features": {
 "ghcr.io/devcontainers/features/common-utils:2": {
  "installZsh": "true",
  "username": "vscode",
  "userUid": "1000",
  "userGid": "1000",
  "upgradePackages": "true"
 },
 "ghcr.io/devcontainers/features/git:1": {
  "version": "latest",
  "ppa": "false"
 }
},

大きく2点の機能が追加されていることを確認できました。
各機能の実装はAvailable Dev Container Featuresから確認します。

詳細は各リンクから確認できますが、Debianに合わせた方法でgit,jq,tree,openssh-clientなどの汎用ツールをインストールしていることを確認できました。
イメージ最小化等のこだわりがなければ便利に利用させていただくと良いのかなという印象です。

まとめ

本記事ではVS Codeのdevcontainerで指定可能なDebianイメージについて調べたことをご紹介しました。
これだけ便利な機能が実装含めて公開されているのは、とてもありがたいです。