こんにちは、かつコーチです。
これまでの記事で、イメージとコンテナの関係を理解してきました。
今回からは、いよいよ実践編です。
コンテナを起動するための最重要コマンド、docker runの使い方を基本から丁寧に解説します。
オプションの意味を1つずつ理解すれば、自分の目的に合わせてコンテナを自在に起動できるようになります。
docker runコマンドの基本
基本構文とオプションの考え方
docker runの基本構文は、次の形です。
docker run [オプション] イメージ名[:タグ] [コンテナ内で実行するコマンド]
イメージ名だけを指定すれば最低限のコンテナは起動できますが、実務ではオプションを組み合わせて使うのが基本です。
オプションは「コンテナをどう動かすか」を細かく指定するためのスイッチのようなものだと考えてください。
覚えるオプションが多いように感じるかもしれませんが、実際によく使うのは5〜6個程度です。
よく使うオプション一覧
代表的なオプションを表にまとめました。
| オプション | 意味 |
|---|---|
-d | バックグラウンドで起動する(detached) |
-p ホスト:コンテナ | ポートを転送する(publish) |
--name 名前 | コンテナに名前を付ける |
-it | 対話的にコンテナを操作する |
--rm | 停止時にコンテナを自動削除する |
これらのオプションは組み合わせて使うことがほとんどです。
次のセクションから、実際に手を動かしながら使い方を確認していきましょう。
実践:docker runでコンテナを起動する
バックグラウンド起動とポートフォワーディング
Webサーバーのイメージnginxを使って、実際にコンテナを起動してみます。
docker run -d -p 8080:80 --name my-nginx nginx
-dでバックグラウンド起動にし、-p 8080:80でパソコンの8080番ポートへのアクセスを、コンテナ内の80番ポートに転送する設定にしています。--name my-nginxで、後から扱いやすいように名前を付けています。
実行後、ブラウザでhttp://localhost:8080にアクセスすると、Nginxのウェルカムページが表示されます。
コンテナ内でコマンドを実行する
コンテナの中に入って直接操作したい場合は、-itオプションを使います。
docker run -it ubuntu bash
-iは標準入力を受け付ける設定、-tは疑似的な端末(ターミナル)を割り当てる設定で、この2つをセットにした-itが定番の組み合わせです。
実行すると、Ubuntuコンテナの中のシェルに入り、root@xxxxxxxx:/#のようなプロンプトに切り替わります。lsやapt updateなど、通常のLinuxコマンドがそのまま使えます。exitと入力すればコンテナから抜けられます。
よくあるつまずきポイント
Before/After:ポート指定を忘れてブラウザからアクセスできない
-pオプションの指定漏れは、初心者が最もハマりやすいポイントです。
❌Before:ポートを指定せずに起動する
docker run -d --name my-nginx nginx
私も最初の頃、このコマンドでNginxを起動し、http://localhostにアクセスしても真っ白な画面(接続エラー)になり、10分ほど原因が分からず悩んだことがあります。docker psで確認すると、コンテナ自体はUp状態で正常に動いているのに、ブラウザからつながらないという状態でした。
✅After:-pオプションでポートを転送する
docker run -d -p 8080:80 --name my-nginx nginx
docker ps
docker psのPORTS列を確認すると、-pを付けなかった場合は空欄になっており、外部からアクセスできる経路が存在しないことに気づきました。
コンテナは外部から隔離された状態がデフォルトのため、ポートを外に公開する際は必ず-pで明示的に指定する必要があります。
応用・一歩先の使い方
–rmオプションで検証用コンテナを使い捨てにする
ちょっとした動作確認だけしたい場合は、--rmオプションが便利です。
docker run --rm -it python:3 python --version
--rmを付けておくと、コンテナが停止した瞬間に自動で削除されるため、docker ps -aに不要なコンテナが溜まっていく心配がありません。
バージョン確認やコマンドの動作テストなど、「一度動かして結果を見たら用済み」というケースでは積極的に使うと、環境がすっきり保てます。
まとめ
この記事のポイント
docker runの基本構文は「オプション+イメージ名+実行コマンド」-dでバックグラウンド起動、-pでポート転送、--nameで名前付けができる-itを使うとコンテナ内に入って対話的に操作できる- ポートを公開するには
-pの指定が必須で、忘れるとブラウザからアクセスできない --rmを使えば検証用コンテナを使い捨てにでき、環境をきれいに保てる
次に読むべき記事
起動したコンテナの管理方法は「コンテナのライフサイクル管理(ps・stop・rm)」で解説します。
イメージ自体の管理を知りたい方は「イメージ管理(images・pull・rmi)の基本」も合わせてどうぞ。
タグ: Docker, 初心者向け, 基本操作