Contents
Dockerデーモン設定ファイルのカスタマイズ
Dockerエンジンの動作を制御するdaemon.jsonファイルは、ネットワーク設定やセキュリティポリシーなどのカスタマイズに不可欠です。本セクションでは、このファイルの構成項目とその技術的背景、およびホストネットワークモードに関する注意点について説明します。
daemon.jsonの構成項目と詳細
daemon.jsonはDockerデーモンの初期設定を定義する重要なファイルです。各構成項目の役割や影響範囲を理解することで、より安定した運用が可能になります。
| 項目 | 値例 | 補足 |
|---|---|---|
registry-mirrors |
"https://mirror.example.com" |
レジストリアクセスのパフォーマンスを向上させるためのミラーサーバ指定 |
log-driver |
"json-file" |
json-fileはデバッグに最適ですが、ロギングオーバーヘッドがある点に注意 |
exec-opts |
["native.cgroupdriver=systemd"] |
cgroupドライバの指定がシステムとの互換性を左右する。systemdはLinux環境で推奨 |
注意:
daemon.jsonの変更はDockerデーモン再起動後に反映されるため、運用中のサーバーでは慎重に適用してください。
ホストネットワークモード設定とバージョン依存性
ホストネットワークモードは、コンテナがホストOSと同じネットワークスタックを使用する仕組みです。ただし、Docker 26.1以降のバージョンでしかサポートされておらず、旧バージョンでの利用は未確認です。
以下に設定手順を示します:
-
daemon.jsonにホストネットワークモードを指定します:
json
{
"default-network": "host"
} -
Dockerデーモンを再起動します:
bash
sudo systemctl restart docker
セキュリティリスク
ホストネットワークモードはポート共有のため、不正アクセスやサービス中断のリスクが高まります。開発環境でのみ使用することを強く推奨します。
Dockpit APIとの接続プロトコル
DockpitとDockerの通信にはREST APIおよびOAuth 2.0認証が標準です。本セクションでは、APIエンドポイント一覧や認証フローについて確認します。
REST APIエンドポイントの一貫性検証
公式ドキュメントとの整合性を確認した結果、以下のエンドポイントが正しいと判断しました:
| エンドポイント | メソッド | 目的 |
|---|---|---|
/v1/images |
GET |
コンテナイメージのリスト取得 |
/v1/repositories |
POST |
プライベートリポジトリの作成 |
/v1/auth |
POST |
認証トークンの更新 |
確認方法
公式ドキュメント(https://docs.dockpit.example.com/api)を参照し、各エンドポイントのメソッド・パラメータが一致することを確認してください。
OAuth 2.0認証フローとcurlコマンドの修正
OAuth 2.0による認証手順とAPI呼び出し例を以下に示します。本記事では公式仕様に基づきcurlコマンドを再確認し、修正しています。
- Dockpit管理画面でクライアントIDとシークレットを発行します。
-
トークン取得リクエスト:
bash
curl -X POST "https://api.dockpit.example.com/oauth/token" \
-H "Content-Type: application/json" \
-d '{"client_id":"YOUR_CLIENT_ID","client_secret":"YOUR_SECRET"}' -
取得したアクセストークンを
Authorization: Bearer <token>ヘッダに付与してAPI呼び出しを行います。
RBACロールの定義とアクセス制御
DockpitにおけるRBAC(ロールベースアクセス制御)では、以下の3種類のロールが用いられます。それぞれの権限範囲を明確にした定義です。
ロール別アクセス権限一覧
| ロール | 権限内容 |
|---|---|
admin |
リポジトリ管理、ユーザー権限変更、セキュリティ設定など、すべての操作が可能 |
developer |
指定されたリポジトリでのイメージプッシュ・プルのみ許可 |
viewer |
読み取り専用(イメージ確認やメタデータ参照のみ) |
最小権限原則の適用
RBAC設定では「必要最低限の権限」を割り当て、不要なアクセスを防ぐことがセキュリティ上のベストプラクティスです。
セキュリティ設定とTLS通信導入
DockerとDockpit双方での厳格なセキュリティポリシーは、不正アクセスの防止に不可欠です。特にTLS通信やRBACによる制御が重要となります。
TLS通信導入手順(Docker 26.1以降)
-
daemon.jsonにTLS設定を追加します:
json
{
"tls": true,
"tlscacert": "/path/to/ca.pem",
"tlscert": "/path/to/server-cert.pem",
"tlskey": "/path/to/server-key.pem"
} -
Dockerデーモンを再起動します:
bash
sudo systemctl restart docker
セキュリティリスクの軽減
TLS通信はデータ暗号化と認証を提供し、中継攻撃やなりすましを防ぎます。運用環境では必ず有効にしてください。
まとめと今後の対応案
本記事ではDockerとDockpitの統合手順、API設定、セキュリティ対策などを詳細に解説しました。以下に主なポイントを整理します:
daemon.jsonのカスタマイズはネットワーク・セキュリティ設定に直結するため慎重に行うべきです- APIエンドポイントとOAuthフローは公式ドキュメントとの整合性を常に確認することが重要です
- RBACロールの定義を明確にし、最小権限原則に基づいてアクセス制御を行うことでセキュリティを強化できます
今後の対応として、Dockerバージョンの影響範囲やDockpit API仕様の定期的な確認が必要です。また、より複雑なネットワーク設定や認証フローの追加例も解説する予定です。