Docker Run to Compose Converter
ブラウザ内で処理docker run コマンドから docker-compose.yml を作成します。変換はブラウザ内で完結します。
結果
# ここに docker-compose.yml が表示されます
How to Use
Paste a docker run command into the left box. The converter reads its image, options, and command, then generates a Compose file on the right. You can also open a shell script or try the sample. Set a service name if the suggested name does not fit your project. The version checkbox adds a legacy version field when you need one.
Review the result before running it. Shell substitutions such as $(pwd) are copied as text, because this page does not execute a shell. Unsupported options appear below the output so you can add the corresponding settings yourself.
使い方
左の入力欄に docker run コマンドを貼り付けると、右側に docker-compose.yml の内容が表示されます。長いコマンドを複数行のまま貼ってもかまいません。行末のバックスラッシュや PowerShell のバッククォートによる行のつながりを読み取り、ひとつのコマンドとして扱います。「サンプル」を押すと入力例を試せます。手元のテキストファイルを読み込むこともできます。
サービス名を空欄にした場合は、イメージ名の最後の部分から名前を作ります。たとえば nginx:1.27 なら nginx です。--name で名前を指定したコマンドでは、その名前を使います。画面上のサービス名欄に文字を入れると、services の下の名前だけを変えられます。--name から作られた container_name は残るため、必要なら出力後に編集してください。
出力は「コピー」でクリップボードに取り込むか、「保存」で docker-compose.yml としてダウンロードできます。Compose v2 では通常 version キーを省略できます。古い構成に合わせて明示したい場合だけチェックボックスをオンにしてください。保存後はプロジェクトの作業フォルダーに置き、内容を確認してから docker compose up などで使用します。
docker run と docker-compose.yml の対応表
docker run はコンテナを一度起動するための命令です。Compose ファイルは、起動時の設定を名前付きサービスとして記録するファイルです。同じ設定でも書く位置や名前が違います。次の表を目安に出力を読んでください。
| docker run の指定 | Compose のキー | 意味 |
|---|---|---|
| -p / --publish | ports | パソコン側とコンテナ側のポートを結ぶ |
| -v / --volume、--mount | volumes | ファイルや保存領域をつなぐ |
| -e / --env、--env-file | environment、env_file | 環境変数を渡す |
| --network、--network-alias | networks、network_mode | 通信先のネットワークを指定する |
| --restart | restart | 終了した後の再起動方法を決める |
| -i、-t | stdin_open、tty | 対話入力と端末表示を使う |
| --health-cmd など | healthcheck | コンテナが動いているか確認する |
| --gpus | deploy.resources.reservations.devices | GPU の利用を指定する |
イメージの後ろにある引数は command の配列に入ります。配列なら、空白を含むひとつの引数も区別できます。-d はバックグラウンドで起動する操作なので、Compose ファイルのキーにはしません。--pull も起動時の操作として扱い、ファイルには入れません。
変換でよくあるエラーと注意点
「docker run で始まるコマンドを貼り付けてください」と表示されたら、先頭を確認してください。docker run、docker container run、sudo docker run の形を受け付けます。コマンドの説明文やターミナルのプロンプト記号まで一緒に貼ると読み取れません。イメージ名がない場合も YAML は作れないため、コマンドの末尾を確認してください。
--rm は起動したコンテナを終了時に削除する指定です。Compose ファイルに同じ設定を常に保存する方法とは役割が違うため、注意を表示します。一度だけ実行したいときは docker compose run --rm を使ってください。見慣れないオプションを無理に変換すると意味が変わるおそれがあるので、未対応のものは注意リストに表示します。出力を使う前に元のコマンドと見比べてください。
$(pwd) はシェルが今のフォルダーを表すために使う書き方です。この変換器はコマンドを実行しないため、その文字を自動で実際のパスに変えることはできません。Compose ファイルでは、たとえば $(pwd)/html を ./html に書き換えると、ファイルを置いた場所を基準にした相対パスとして扱いやすくなります。Windows のパスや空白を含むパスも、保存後に確認してください。
環境変数の $VAR は、そのまま YAML に残ります。Compose で読み込むと .env などから値を参照する場合があります。元のシェルで展開される値と同じになるとは限りません。大切な値やパスワードを含むコマンドを保存するときは、ファイルの共有先にも注意してください。-e KEY=VALUE と -e KEY の違いも確認し、必要なら .env を用意します。
ports の 80:80 のような値は、YAML ではダブルクォートが必要です。このツールは既存の YAML 生成器を使って引用符を付けます。引用符がないまま手で書き換えると、値の読み方が変わることがあります。また --network host は通常の名前付きネットワークと違い、network_mode: host に変換します。ホスト側のネットワークを共有するため、ports の公開指定と同時に使うと期待どおりにならない場合があります。実行環境の Compose 設定を確認してください。
入出力例
次の短い例では、nginx イメージを使ってウェブサーバーを動かす設定を作ります。8080:80 は、パソコンの 8080 番からコンテナの 80 番へつなぐ意味です。名前付きボリューム data は、コンテナを作り直しても保存した内容を引き継ぐために使います。
docker run --name web -p 8080:80 -v data:/usr/share/nginx/html nginx:1.27services:
web:
image: "nginx:1.27"
container_name: web
ports:
- "8080:80"
volumes:
- "data:/usr/share/nginx/html"
volumes:
data: {}出力の ports と volumes は複数行のリストです。同じオプションを何回か指定したコマンドなら、指定した順に項目が増えます。名前付きボリュームを使う場合は、ファイル末尾にも volumes セクションを追加します。既存の名前付きネットワークを指定した場合は、末尾に external: true を持つ networks セクションが追加されます。
プライバシー
入力したコマンドの読み取り、Compose 形式への変換、コピー用の文字列の作成は、すべてブラウザ内で行います。変換のために外部へコマンドを送信しません。入力欄の内容は、作業の続きができるよう、この端末のローカル保存領域に一時的に残ることがあります。「クリア」または「保存を消す」で削除できます。共有端末で使うときは、作業後に消してください。
🔒 すべての処理はブラウザ内で完結し、入力データはサーバーへ送信されません。登録不要・無料。 / All processing runs in your browser; nothing is uploaded. Free, no sign-up. プライバシーポリシー / Privacy Policy