linux-docker について
Linux上でDockerとDocker Composeを扱うスキルです。コンテナアプリケーションを構築、デプロイ、保護する開発者向けに、イメージ、ライフサイクル、ネットワーク、ストレージ、レジストリ、安全設定を扱います。
主な機能
- 01Dockerfileによるイメージ構築
- 02コンテナネットワークとボリュームの設定
- 03コンテナのライフサイクル管理
- 04レジストリへのイメージのプッシュと取得
- 05コンテナのセキュリティ設定
活用シーン
- 01アプリケーションコンテナの構築と実行
- 02Composeによる複数サービスのデプロイ
- 03コンテナネットワークのトラブル調査
- 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 を使います。
具体的な使用例
- シンプルな 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 からアクセスできます。 - 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 などのスキルにリンクして、より高度な操作に対応します。