先に要点
docker runは、イメージから コンテナ を作って起動するコマンドです。- 最初によく使うのは
-p-d--rm-it-vあたりです。 -pはポート公開、-dはバックグラウンド実行、--rmは終了後に自動削除、-itは対話シェル、-vはボリュームや bind mount に使います。- 単体コンテナを試すにはかなり便利ですが、複数サービス構成を残したいなら Docker Compose の方が向いています。
Docker を触り始めると、まず出てくるのが docker run です。
ただ、オプションがいきなり多く見えて、結局どれを覚えればいいの? で止まりやすいです。
この記事では、2026年4月14日時点で Docker Docs の CLI reference と quickstart 系の公開情報を確認しながら、docker run とは何か、最初にどのオプションから押さえるとよいかを初心者向けに整理します。
Docker の全体像から先に見たいなら、Dockerとは?コンテナで何がうれしい?初心者向けに仕組み・メリット・使いどころを解説 から読むと流れがつかみやすいです。
docker runとは何か
docker run は、イメージから新しいコンテナを作って起動するコマンドです。
Docker Docs でも、Create and run a new container from an image と説明されています。
ここで大事なのは、既存のコンテナをただ起動するコマンド ではないことです。
イメージをもとに、新しいコンテナを作って、そのまま動かすところまでをまとめてやります。
たとえば、
docker run nginx
なら、nginx イメージを使ってコンテナを新しく作り、起動します。
ローカルにイメージが無ければ、先に取得もしてくれます。
まず押さえたい基本の形
基本形はこうです。
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
意味としては、
OPTIONS: 動かし方の指定IMAGE: 何のイメージから作るかCOMMAND: 起動時に実行するコマンドを上書きしたいときに使う
です。
最初は OPTIONS + IMAGE だけ見られればだいぶ十分です。
最初によく使うオプション
1. -p: ポートを公開する
Web サーバー系を試すときにかなりよく使います。
docker run -p 8080:80 nginx
これは、ホスト側の 8080 番を、コンテナ側の 80 番へつなぐ指定です。
Docker Docs でも、publish options として -p が説明されています。
初心者向けには、ブラウザからアクセスできるようにするための窓口を開ける と考えると分かりやすいです。
2. -d: バックグラウンドで動かす
docker run -d nginx
-d は detached mode です。
端末を占有せず、バックグラウンドでコンテナを動かしたいときに使います。
サーバー系コンテナではかなりよく使います。
3. --rm: 終了後に自動削除する
docker run --rm hello-world
一時的に試すだけのコンテナではかなり便利です。
終わったあとに残骸を残しにくいので、検証用途ではよく使います。
Docker Docs でも、コンテナ終了後に自動削除するオプションとして案内されています。
4. -it: 対話的に入る
docker run -it alpine sh
-i は標準入力を開いたままにする、-t は疑似TTYを割り当てる、という意味です。
ふつうはセットで -it と書かれることが多いです。
初心者向けには、コンテナの中に入って手で触るときの形 と覚えるとかなり分かりやすいです。
5. -v: ボリュームや bind mount をつなぐ
docker run -v mydata:/var/lib/mysql mysql:8.4
または
docker run -v ./:/app node:22-alpine
-v は、ボリューム や bind mount をつなぐときに使います。
データを残したい、ローカルコードを見せたい、といった場面で重要です。
最初に試しやすい例
例1: nginx をブラウザで見る
docker run --rm -p 8080:80 nginx
これなら、使っている間だけ起動して、終わったら消しやすいです。
http://localhost:8080 へアクセスすると、nginx の初期画面が見えます。
例2: Alpine Linux に入ってみる
docker run --rm -it alpine sh
これは 軽い Linux に入って shell を触る 例としてかなり分かりやすいです。
コンテナの中へ入る感覚をつかみやすいです。
例3: ローカルコードをコンテナから見る
docker run --rm -it -v ./:/app -w /app node:22-alpine sh
この形だと、手元のディレクトリをコンテナ内 /app に見せながら入れます。
開発でよく出る使い方に近いです。
実務でよくある使い方
単体コンテナの動作確認
Redis、nginx、MySQL などを単体で試したいときに便利です。
いきなり Compose を組む前に、まず 1 個だけ試す入口としてかなり使いやすいです。
一時的な検証
このイメージの中身を軽く見たい このコマンドだけ走らせたい といったときに向いています。
--rm と組み合わせると、かなり気軽です。
コンテナの中へ入って調査する
-it を付けると、中に入って調べやすいです。
ただし、再現したい変更は手で直して終わりにせず、後で Dockerfile や設定へ戻す方が実務では大事です。
いつ Docker Compose の方が向いているか
docker run は単体ならかなり便利ですが、複数サービスになるとコマンドが散りやすいです。
アプリ、DB、Redis のように複数コンテナをまとめて扱いたいなら、Docker Compose の方がかなり分かりやすいです。
つまり、
- 単体を試す:
docker run - 構成を残して共有する: Docker Compose
くらいで考えると入りやすいです。
ローカル検証で `nginx の初期画面だけ見たい` `Redis を単体で立ててみたい` なら docker run がかなり手軽です。一方で、Laravel アプリ + MySQL + Redis のように複数を毎回立ち上げるなら、最初から Compose に寄せた方が管理しやすいです。
初心者がよくハマる点
ポート指定の向きが分からなくなる
-p 8080:80 の順番は ホスト:コンテナ です。
ここを逆に覚えると、毎回かなり混乱します。
--rm で消えるものを意識していない
一時検証には便利ですが、コンテナ自体は終了後に消えます。
必要なデータを残したいなら、ボリューム や bind mount を分けて考える必要があります。
-it と -d を同時につけた意味を理解していない
場面によっては併用もありますが、初心者のうちは 中に入って触るなら -it、裏で動かすなら -d と分けて考える方が分かりやすいです。
まとめ
docker run は、イメージから新しい コンテナ を作って起動するコマンドです。
最初に押さえたいのは -p -d --rm -it -v の5つで、これだけでもかなり実用的です。
単体コンテナの試行や一時検証にはかなり便利ですが、複数サービスをまとめて残したいなら Docker Compose の方が向いています。
続けて読むなら、Docker Composeとは?複数コンテナをまとめて動かす基本を初心者向けに解説 や bind mountとは?ボリュームとの違いと開発で便利な理由を解説 もかなりつながりやすいです。
参考リンク
- Docker Docs: Docker CLI reference
- Docker Docs: docker run
- Docker Docs: Getting started with containers