本文へスキップ
ToolMug

docker run から Docker Compose への変換

1 つ以上の docker run コマンドを貼り付けると、対応する compose.yaml を取得できます。ポート、ボリューム、環境変数、ネットワーク、再起動、メモリ・CPU 制限、ログ、ヘルスチェックを変換し、手動で追加すべきフラグも表示します。

ブラウザ内で動作 — 入力した内容はアップロードされません

docker run → Docker Compose
docker run
Docker Compose

使い方

  1. 左側に docker run コマンドを貼り付けます。末尾のバックスラッシュを含む複数行や、改行・セミコロン・&& で区切った複数コマンドに対応します。
  2. 右側に Compose ファイルが表示されます。各コマンドは --name の名前、なければイメージ名をサービス名にします。
  3. 変換されなかった内容の黄色い注記を確認し、compose.yaml をコピーまたはダウンロードして docker compose up -d を実行します。

オプションの説明

対応するフラグ
-p、-v、--mount、-e、--env-file、--name、--restart、--network、-w、-u、-h、--entrypoint、-l、--add-host、--dns、--cap-add/drop、--device、-m、--cpus、--shm-size、--ulimit、--log-driver/--log-opt、--health-*、-i、-t、--privileged、--init、--read-only などに対応します。
名前付きボリュームとネットワーク
pgdata:/data のような名前付きボリュームはトップレベルの volumes に宣言します。カスタムネットワークは external true として宣言し、既存のネットワークを使います。host と none は network_mode になります。
ポート
ポートの対応付けは常に引用符付きになります。YAML 1.1 は 22:22 のような値を 60 進数として読むため、Docker のドキュメントもポートを文字列で書くよう勧めています。
無視されるフラグ
-d と --rm には Compose で対応する設定がないため削除します。--gpus など未対応のフラグは注記に表示します。

例

docker run -d --name web --restart unless-stopped -p 8080:80 \
  -v ./html:/usr/share/nginx/html:ro -e TZ=Asia/Shanghai --memory 512m nginx:1.27

次のように変換されます。

services:
  web:
    image: nginx:1.27
    container_name: web
    restart: unless-stopped
    mem_limit: 512m
    ports:
      - "8080:80"
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - ./html:/usr/share/nginx/html:ro

よくある質問

version 行は必要ですか?

いいえ。現在の Docker Compose v2 はトップレベルの version フィールドを使わず、あっても警告を出して無視します。

環境変数のパスワードはアップロードされますか?

いいえ。解析と変換はブラウザ内で行われ、サーバーには送信されません。

引用符付きの引数に対応していますか?

はい。シングルクォート、ダブルクォート、バックスラッシュのエスケープはシェルの規則に従うため、-e "MSG=hello world" の値全体が保持されます。

プライバシー

このツールはすべてブラウザ内で動作します。ファイルやテキストはお使いの端末上で処理され、当サイトのサーバーにアップロードされることはありません。

関連ツール