docker run の使い方

コンテナを作って動かす

書き方

docker run [オプション] イメージ [コマンド]
-d(裏で)--name 名前 -p ホスト:コンテナ -e KEY=値 -v 場所:パス
-it(入って操作)--rm(終わったら消す)--network ネット --restart 方針

イメージが手元になければ pull してから、新しいコンテナを作って起動します。イメージの後ろにコマンドを書くと CMD の代わりに実行します。

よく使うオプション

オプション意味
-d裏で動かす(すぐにプロンプトに戻る)
--name 名前コンテナに名前をつける(付けないと自動の名前になる)
-p ホスト:コンテナホストのポートをコンテナのポートにつなぐ
-e KEY=値環境変数を渡す(--env-file ファイル でまとめて渡せる)
-v 名前やパス:パスボリュームやホストのディレクトリをつなぐ
-itキーボードをつないで端末として操作する(シェルに入るとき)
--rm終わったらコンテナを自動で消す
--restart 方針no・on-failure・always・unless-stopped から、止まったときの再起動の方針を選ぶ
--network 名前つなぐネットワークを指定する
-m 256m / --cpus 0.5メモリと CPU の上限を決める

例

$ docker run -d --name web -p 8080:80 nginx3f2a9c1d8e7b4a6f0c5d2e1b9a8f7c6d5e4b3a2f1c0d9e8b7a6f5c4d3e2b1a0f

nginx のコンテナを web という名前で裏で動かし、ホストの 8080 番をコンテナの 80 番につなぎます。ブラウザで http://サーバー:8080 を開くと nginx のページが出ます。

$ docker run --rm alpine echo hellohello

alpine のコンテナで echo を 1 回だけ動かし、終わったらコンテナを消します。試しに動かすときに便利です。

$ docker run -it --rm ubuntu bash

ubuntu のコンテナの中のシェルに入ります。exit で抜けるとコンテナは止まり、--rm があるので消えます。

$ docker run -d --name queue --restart on-failure:3 redis:7

redis を動かし、エラーで落ちたときだけ 3 回まで起動し直すようにします。ずっと動かしておくサービスには unless-stopped を使います。

$ docker run -d --name db -e POSTGRES_PASSWORD=secret -v pgdata:/var/lib/postgresql/data postgres:17

環境変数でパスワードを渡し、データをボリューム pgdata に置いて PostgreSQL を動かします。コンテナを消してもデータは残ります。

よくある間違い・注意

  • オプションはイメージ名より前に書きます。docker run nginx -d のように後ろに書くと、コンテナの中で動かすコマンドの引数になります。
  • 同じ名前のコンテナがあると「Conflict. The container name is already in use」になります。docker rm で消すか、別の名前にします。
  • -p 80:8080 は「ホストの 80 番 → コンテナの 8080 番」です。左がホスト、右がコンテナです。

実際に打って練習する

Docker コースの Lv6「はじめての船出 docker run」で覚えます(第1章 はじめてのコンテナ)。ブラウザの中のシミュレーターで、本物と同じように打って確かめられます。

Lv1〜7 はログインすると無料で試せます(それより先はゴールド以上のプランで遊べます)。

Docker コマンド一覧(使い方と例)へ戻る