mcpField
L
linux-docker

linux-docker

github.com/alphaonedevクラウド・DevOps57 回インストール
リポジトリ

linux-docker について

Linux上でDockerとDocker Composeを扱うスキルです。コンテナアプリケーションを構築、デプロイ、保護する開発者向けに、イメージ、ライフサイクル、ネットワーク、ストレージ、レジストリ、安全設定を扱います。

主な機能

  1. 01Dockerfileによるイメージ構築
  2. 02コンテナネットワークとボリュームの設定
  3. 03コンテナのライフサイクル管理
  4. 04レジストリへのイメージのプッシュと取得
  5. 05コンテナのセキュリティ設定

活用シーン

  1. 01アプリケーションコンテナの構築と実行
  2. 02Composeによる複数サービスのデプロイ
  3. 03コンテナネットワークのトラブル調査
  4. 04Linuxコンテナのセキュリティ強化

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/alphaonedev/openclaw-graph --skill linux-docker

インストール後、Claude Code で/linux-dockerを入力して読み込まれたか確認します。

詳細

linux-docker

目的

このスキルを使うと、Linux 上で Docker と Docker Compose の操作を行えます。Dockerfile の作成、コンテナー管理、ネットワーク、ボリューム、ライフサイクルイベント、レジストリーとのやり取り、セキュリティ強化に重点を置き、効率的で安全なコンテナー化アプリケーションを実現します。

使用する場面

ソースコードからのイメージ構築、Compose を使った複数サービスアプリのデプロイ、コンテナー間通信のためのネットワーク設定管理、Linux 環境での脆弱性に対するコンテナーの保護など、アプリケーションのコンテナー化に関するタスクでこのスキルを使用します。

主な機能

  • Dockerfile を使った Docker イメージの構築と管理:ベースイメージを指定し、COPY/ADD でレイヤーを追加して、ENTRYPOINT/CMD を設定します。
  • ネットワークの設定:--network bridge のようなフラグを使って、bridge、host、overlay ネットワークを利用します。
  • ボリュームの処理:-v /host/path:/container/path を使って、ホストディレクトリーまたは名前付きボリュームをマウントします。
  • コンテナーのライフサイクル管理:SIGTERM などのシグナルを処理するコマンドを使って、コンテナーを起動、停止、再起動します。
  • レジストリーとのやり取り:認証を行い、Docker Hub などのリポジトリーとの間でイメージをプッシュ/プルします。
  • セキュリティ強化の適用:--security-opt no-new-privileges などのオプションで機能を制限し、Trivy などのツールでイメージをスキャンします。

使用パターン

イメージを構築するには、Dockerfile を読み込んでから、適切なコンテキストを指定して docker build を実行します。Compose を使う場合は、YAML ファイルを解析して docker-compose up を実行します。Docker デーモンが起動していることなど、必要な依存関係を必ず確認してください。ネットワークを設定するには、Compose の YAML ファイルで networks キーの下にネットワークを指定します。機密データには環境変数を使います。たとえば、$DOCKER_REGISTRY_URL をコンテナーの環境変数に渡します。セキュリティのため、可能な場合は必ず --read-only フラグを付けてコンテナーを実行し、書き込みを防止します。

主なコマンド/API

  • イメージを構築する:docker build -t myimage:1.0 .(カスタムファイルには -f path/Dockerfile を使用します)。
  • コンテナーを実行する:docker run -d --name mycontainer -p 8080:80 -v /host/data:/app/data myimage:1.0。
  • ネットワークを管理する:docker network create mynet を実行してから、docker run --network mynet myimage を実行します。
  • ボリュームを使用する:docker volume create myvolume を実行し、-v myvolume:/data でマウントします。
  • コンテナーのライフサイクル:docker start mycontainer、docker stop mycontainer、docker rm -f mycontainer。
  • レジストリー操作:docker login -u user -p $DOCKER_PASSWORD registry.example.com を実行し、docker push myimage:1.0 でプッシュします。
  • Docker Compose:docker-compose -f docker-compose.yml up -d を実行します。YAML では次のようにサービスを定義します:
    version: '3'
    services:
      web:
        image: nginx
        ports:
          - "80:80"
    
  • API エンドポイント:コンテナーの一覧表示には GET /containers/json などの Docker Engine API を使用します。$DOCKER_API_KEY を含むヘッダーで認証します。

統合に関する注意

Ubuntu では apt install docker.io を使って Docker がインストールされていることを確認し、統合します。レジストリーにアクセスするには、export DOCKER_REGISTRY_URL=registry.example.com や export DOCKER_API_KEY=yourkey のように環境変数を設定します。CI/CD パイプラインなどで他のスキルと組み合わせる場合は、Compose ファイルを使って Jenkins などのツールを連携させます。YAML では ${VAR} を使って外部設定を参照します。セキュリティのため、必ず信頼できるレジストリーからプルし、実行コマンドでは --cap-drop ALL を使用します。Kubernetes などのオーケストレーションツールを使う場合は、docker-compose config で Compose ファイルを変換用にエクスポートします。

エラー処理

権限エラーが発生した場合は、たとえば sudo docker run ... のようにコマンドの前に sudo を付けます。groups を使って、ユーザーが docker グループに所属していることを確認してください。イメージのプルに失敗した場合は、echo $DOCKER_API_KEY でレジストリー認証を確認し、docker pull を再試行します。ネットワークの問題を調べるには、docker network inspect mynet を使います。docker network prune で解決してください。Dockerfile のビルドエラーが発生した場合は、ログで "no such file or directory" のようなメッセージを探し、パスを修正します。Compose のエラーが発生した場合は、実行前に docker-compose config で YAML を検証します。「service not found」の一般的な解決方法は、インデントを確認することです。実行中または障害のあるコンテナーを調べるには、必ず docker ps -a を使い、出力を確認するには docker logs mycontainer を使います。

具体的な使用例

  1. シンプルな Nginx コンテナーをビルドして実行します。まず、FROM nginx:alpine; COPY index.html /usr/share/nginx/html; を記述した Dockerfile を作成します。次に、docker build -t mynginx . でビルドします。docker run -d --name webserver -p 8080:80 --read-only mynginx を実行して、安全に起動します。localhost:8080 からアクセスできます。
  2. Compose でウェブアプリをオーケストレーションします。docker-compose.yml ファイルを作成します。
    version: '3'
    services:
      db:
        image: postgres
        volumes:
          - dbdata:/var/lib/postgresql/data
      web:
        image: mynginx
        ports:
          - "8080:80"
    volumes:
      dbdata:
    
    次に、docker-compose up -d を実行して起動します。docker-compose up -d --scale web=3 で web サービスをスケールします。

グラフの関係

  • 接続先:linux cluster(親)。
  • 関連スキル:タグ ["docker", "containers", "compose", "registry"] に基づき、container-management や linux-networking などのスキルにリンクして、より高度な操作に対応します。

コメント