Fragments of verbose memory

冗長な記憶の断片 - Web技術のメモをほぼ毎日更新

May 5, 2025 - 日記

Docker: コンテナからホスト上のコマンドを実行する方法

run-command-on-host-from-container cover image

nsenterコマンドを使ってDockerコンテナからホスト上のコマンドを実行する方法について紹介します。

nsenter を使ってホストのネームスペースに入る

コンテナを特権モードかつホストの PID ネームスペース共有で起動し、nsenter を用いるとホストのルートプロセス(PID 1)のネームスペース内でコマンドを実行できます。

1
2
3
4
5
docker run -it --rm \
  --privileged \
  --pid host \
  debian:stable-slim \
  nsenter -t 1 -m -u -n -i bash

nsenter コマンドは、既存のプロセスが属する名前空間(namespace)内で指定したプログラムを実行するためのコマンドです。オプションで指定したPIDのプロセスが持つマウント、UTS、IPC、ネットワーク、PID、ユーザー、cgroup、timeなどの名前空間に入ります。プログラムを指定しない場合はデフォルトで${SHELL}(通常は/bin/sh)が実行されます。

Jan 9, 2025 - 日記

AIによるスペックテストの変更をガードする方法

python-guard-spec-testcases cover image

テスト駆動開発(TDD)では、顧客の分析された顧客の要求仕様をテストケースとして初期段階に完成させますが、 開発者やAIがこのテストケースを変更してしまってはTDDの意味がありません。

本稿では、Pythonの pytest を使ってテストを書いている中で、顧客レビュー済みのスペックテスト(仕様テスト)を開発者が変更してしまうのを防ぐためのアイデアをご紹介いたします。

Jan 2, 2025 - 日記

pytest テスト実行中の状態を知るデバッグオプション --pdb

python-pytest-pdb cover image

pytest は Python 開発者にとって無くてはならないテストフレームワークです。その中でも、失敗したテストケースで即座にデバッガーを起動できる --pdb オプションは、テスト駆動開発 (TDD) やバグ修正において非常に便利な機能です。

この記事では、 --pdb の使い方、注意点、副作用、そしてその回避方法について詳しく解説します。