Introduction
AWS で ECS on EC2 から別のコンテナを起動する、という動きをオンプレミスで模倣するコードを書いているとき、権限回りなどで苦労したのでメモしておく。
How to do?
最初は ChatGPT に /var/run/docker.sock をマウントしろだの、postCreateCommand でユーザに権限を与えろだの的を得ない回答が返ってきて時間を取られた。
最近はそんな苦労は不要で features/docker-outside-of-docker を使ってこの要望を簡単に実現できる。
権限の操作やマウントなど、煩わしい操作を全部肩代わりしてくれる。
※rootless の場合はマウント設定が必要
サポートされているのは Debian/Ubuntu ベースのディストリビューションのみ。
下記は一例だが、features に追加されている ghcr.io/devcontainers/features/docker-outside-of-docker:1 が肝。
1 | { |
これで接続した DevContainer から
1 | root@675dc072c6b8:/workspaces/Demo# docker ps -a |
のようにホスト側のコンテナが見える。
ただし、features/docker-outside-of-docker は Ubuntu 26.04 や debian 13 のような一部のコンテナでは下記のようなエラーになってしまう。
1 | 30.63 (!) The 'moby' option is not supported on ubuntu 'resolute' because 'moby-cli' and related system packages are not available in that distribution. |
1 | # Prevent attempting to install Moby on Debian trixie or Ubuntu resolute (packages not available) |
にように、debian の trixie (debina 13) と resolute (ubuntu 26.04) での moby 使用はサポート外となっている。
対処方法は書いてある通り簡単で "moby": false を追加するだけでよい。
1 | "features": { |
もしくは ubuntu 24.04 や debian 12 を使えばよい。
