SlimToolkit(Slim)は、Dockerfileやワークフローを変更せずに、既存のコンテナイメージを解析・軽量化・強化します。
Tecnativa/docker-socket-proxy
Dockerソケットの前段に置くセキュリティ重視のHAProxyプロキシ。環境変数でDocker APIの各セクションへのアクセスを許可・拒否できます。
- スター
- 2,850
- フォーク
- 211
- 未解決の Issue
- 57
- 最終コミット
- 2 か月前
これは何?
Docker Socket ProxyはサービスとDockerソケットの間に入り、許可するDocker APIリクエストをフィルタリングします。ソケットをコンテナにそのままマウントすると、実質的にホストのroot権限を与えることになりますが、イベントへの反応やコンテナの管理にソケットを必要とするサービスもあります。このプロキシを使えば、サービスが実際に必要とするAPIの範囲だけを公開できます。
このプロキシはAlpineベースのHAProxyイメージと、シンプルな設定ファイルで構成されています。APIの各セクションは環境変数で制御し、1でアクセスを許可、0で拒否します。拒否されたセクションへのリクエストにはHTTP 403を返します。Events、ping、versionはデフォルトで許可される一方、AUTHやSECRETSなどセキュリティ上重要なセクションと、POSTによる書き込み操作はデフォルトで拒否されます。
このイメージはTLSを提供していないため、公開せず、プライベートなDockerネットワーク上での実行を想定しています。balenaOSなどのシステム向けにSOCKET_PATHでソケットパスを設定でき、LOG_LEVELも指定できます。複数のDocker APIバージョンに対応しており、Docker HubとGitHub Container Registryでイメージが公開されています。
主な機能
- 01セクションごとの環境変数でDocker APIへのアクセスを許可・拒否できます。
- 02ブロックされたリクエストにはHTTP 403を返します。
- 03POSTを無効にして、プロキシを読み取り専用にできます。
- 04SOCKET_PATHでソケットパスを指定できます。
- 05AlpineとHAProxyをベースに、シンプルな設定ファイルで構成されています。
- 061.27から1.51までの複数のDocker APIバージョンに対応しています。
ユースケース
- 監視コンテナやリバースプロキシコンテナに、コンテナイベントへの読み取り専用アクセスを付与する。
- CIツールや自動化ツールがホスト上で特権操作を実行できないように制限する。
- Traefikのようなサービスディスカバリーツールが必要とするDocker APIセクションだけを公開する。
クイックスタート
- 1
Docker socket へのアクセスを許可して proxy コンテナを起動する
docker container run -d --privileged --name dockerproxy -v /var/run/docker.sock:/var/run/docker.sock -p 127.0.0.1:2375:2375 tecnativa/docker-socket-proxy - 2
ローカルの Docker クライアントが proxy を使用するように設定する
export DOCKER_HOST=tcp://localhost:2375 - 3
docker version を実行して接続を確認する
docker version
使う前に知っておきたいこと
- README によると、Docker socket に接続するにはコンテナを --privileged で実行する必要があります。
- このイメージは TLS に対応していないため、通信は平文の HTTP となり、制限されたネットワーク内に留める必要があります。
- セキュリティ上重要な領域では、各 Docker API セクションへのアクセスはデフォルトで無効になっており、明示的に許可する必要があります。
収録されている特集
トピック
よくある質問
- docker-socket-proxy とは?
- Dockerソケットの前段に置くセキュリティ重視のHAProxyプロキシ。環境変数でDocker APIの各セクションへのアクセスを許可・拒否できます。 Docker Socket ProxyはサービスとDockerソケットの間に入り、許可するDocker APIリクエストをフィルタリングします。ソケットをコンテナにそのままマウントすると、実質的にホストのroot権限を与えることになりますが、イベントへの反応やコンテナの管理にソケットを必要とするサービスもあります。このプロキシを使えば、サービスが実際に必要とするAPIの範囲だけを公開できます。
- docker-socket-proxy は無料で使えますか?ライセンスは?
- docker-socket-proxy は Apache-2.0 ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- docker-socket-proxy は今もメンテナンスされていますか?
- 半年以内に更新あり。docker-socket-proxy の最終コミットは 2026年8月31日 です。
- docker-socket-proxy は何に使えますか?
- 監視コンテナやリバースプロキシコンテナに、コンテナイベントへの読み取り専用アクセスを付与する。 CIツールや自動化ツールがホスト上で特権操作を実行できないように制限する。 Traefikのようなサービスディスカバリーツールが必要とするDocker APIセクションだけを公開する。
- docker-socket-proxy のインストール方法は?
- Docker socket へのアクセスを許可して proxy コンテナを起動する: docker container run -d --privileged --name dockerproxy -v /var/run/docker.sock:/var/run/docker.sock -p 127.0.0.1:2375:2375 tecnativa/docker-socket-proxy ローカルの Docker クライアントが proxy を使用するように設定する: export DOCKER_HOST=tcp://localhost:2375 docker version を実行して接続を確認する: docker version
- docker-socket-proxy はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/Tecnativa/docker-socket-proxy
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
Podmanなどのコンテナエンジンを基盤に、コンテナやKubernetesをローカルでビルド、実行、管理できるデスクトップアプリ。
イメージやHelm chartの保存・署名・スキャンに対応し、RBACとレプリケーションを備えたオープンソースのクラウドネイティブなコンテナレジストリです。
Bitnamiがメンテナンスする、すぐに使えるセキュリティ強化済みDockerコンテナイメージとして提供される、人気のオープンソースアプリケーション集です。
HTTP/1、HTTP/2、WebSocketの通信を調査できる、コンソール・コマンドライン・Webインターフェースを備えたTLS対応の対話型HTTPプロキシ。
LLM APIに送るプロンプト内の機密データをマスキングし、ストリーミング応答で元の値に戻すローカルプライバシーゲートウェイ。