- Docker と Docker Compose がインストールされていること。
- Windows の場合、Git Bash (MINGW64) や PowerShell を使用。
- プロジェクトルートに
picoCTFフォルダを配置(docker-compose.yml の volumes 設定に基づく)。
docker compose up -d- -dオプションはデタッチモードでの起動。
- 初回実行時はイメージのビルドも自動で行われる。
docker compose exec kali bash- docker-compose.yml のサービス名(
kali)を使って接続。
docker compose up -d --build--buildオプションで Dockerfile の変更を反映し、キャッシュを無視して再ビルド。- 開発中に Dockerfile を修正した場合に使う。
コンテナ起動後、いつでもVPN接続・切断が可能です。以下のどちらかの方法で接続してください。
方法1: ホスト側からコマンドで接続 新しいターミナルを開き、ホスト側から実行中のコンテナに対してコマンドを送ります。
docker compose exec kali sudo openvpn --config /workspace/your-vpn-config.ovpn方法2: コンテナ内のシェルから接続
すでに docker compose exec kali bash などでコンテナ内に入っている場合、そのまま実行できます。
sudo openvpn --config /workspace/your-vpn-config.ovpn注意点
- 必要なファイルの配置: .ovpnファイルはホストの
./CTFフォルダ(コンテナ内の/workspace)に置いてください。 - 権限設定: コンテナには
NET_ADMIN権限と/dev/net/tunデバイスが設定済みです。 - バックグラウンド実行: 通常、VPN接続はターミナルを占有します。バックグラウンドで動かしたい場合は、別のターミナルを開くか、コンテナ内で
tmuxやscreenを使用してください。
- ログの確認:
docker compose logs(リアルタイム表示:docker compose logs -f) - コンテナ停止:
docker compose down - コンテナとボリューム削除:
docker compose down -v - サービス一覧:
docker compose ps
docker build -f Dockerfile.kali -t my-kali:latest .-f: Dockerfile の指定(ここではDockerfile.kali)。-t: タグ付け(例:my-kali:latest)。.: ビルドコンテキスト(現在のディレクトリ)。
docker run -it --rm my-kali:latest-it: 対話モード。--rm: コンテナ終了時に自動削除(一時使用に便利)。- ボリュームマウントが必要な場合は
-v ./picoCTF:/workspaceを追加。
docker stop <container-id><container-id>はdocker psで確認(例:docker psで ID を取得)。
docker rm <container-id>- 停止済みのコンテナを削除。実行中のものは先に
docker stop。
- イメージ一覧:
docker images - コンテナ一覧:
docker ps(全コンテナ:docker ps -a) - イメージ削除:
docker rmi <image-id> - ボリューム一覧:
docker volume ls - システムクリーンアップ:
docker system prune(未使用リソース削除)
Docker のリソース(イメージ、コンテナ、ボリューム)を表示・削除する方法です。Windows の Git Bash から実行可能です。
- 表示:
docker images- ビルド済みのイメージ一覧を表示。
- 削除:
docker rmi <image-id>またはdocker rmi <image-name>:<tag>- 例:
docker rmi my-kali:latest - 強制削除:
docker rmi -f <image-id>
- 例:
- 表示:
docker ps -a- 実行中・停止中の全コンテナを表示。
- 削除:
docker rm <container-id>またはdocker rm <container-name>- 例:
docker rm docker-kali-1 - 実行中の場合は先に
docker stop <container-id>。 - 強制削除:
docker rm -f <container-id>
- 例:
- 表示:
docker volume ls- 作成されたボリューム一覧を表示。
- 削除:
docker volume rm <volume-name>- 例:
docker volume rm my-volume - 未使用のボリュームを一括削除:
docker volume prune
- 例:
- 削除前に
docker compose downでコンテナを停止。 - システム全体のクリーンアップ:
docker system prune(未使用のリソースを削除)。 - 誤削除を避けるため、ID や名前を確認してから実行。
- パス区切りは
/で統一(Git Bash の場合)。ボリュームマウントで権限エラーが出る場合は、Docker Desktop の設定を確認。 - コンテナが起動しない場合、
docker compose logsでエラーログを確認。ビルドエラー時は--no-cacheを追加。 - Dockerfile や docker-compose.yml を変更したら、
docker compose up -d --buildで反映。
sudoをつければ実行できるが、dockerグループにユーザーを追加したほうが簡便になる
sudo usermod -aG docker $USER
newgrp docker