【完全版】docker runコマンドの基本から実例までを徹底解説

※本サイトにはプロモーション・広告が含まれています。

(最終更新日:2023年8月)

✔当記事は以下のような方に向けて書かれています

「docker runコマンドの機能がどういったものか確認したい」
「docker runコマンドの正しい書き方を学びたい」
「docker runコマンドの具体的な使用例を見て理解を深めたい」

✔当記事で伝えたいこと

  • docker runコマンドのコアな部分
  • docker runコマンドのどのように書くか、そしてそれがどのように応用されるか
  • docker runコマンドの実践的な例

当記事では、docker runコマンドの基礎的な部分からオプションによる進んだ使い方まで、具体的な例を交えて丁寧に説明しています。

最後までご覧いただくことで、このコマンドの全貌が把握できます。

ぜひ最後までご覧ください。

筆者プロフィール

筆者プロフィールアイコン

【現職】プロダクトマネージャー

【副業】ブログ(月間20万PV)/YouTube/Web・アプリ制作

「プログラミング × ライティング × 営業」の経験を活かし、30後半からのIT系職へシフト。現在はプロダクトマネージャーとして、さまざまな関係者の間に入り奮闘してます。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

【当ブログで紹介しているサイト】

当サイトチュートリアルで作成したデモ版日報アプリ

Django × Reactで開発したツール系Webアプリ

✔人に見せても恥ずかしくないコードを書こう

「リーダブルコード」は、わかりやすく良いコードの定義を教えてくれる本です。

  • 見るからにきれいなコードの書き方
  • コードの分割方法
  • 変数や関数の命名規則

エンジニアのスタンダートとすべき基準を一から解説しています。

何回も読むのに値する本なので、ぜひ手にとって読んでみてください。

DockerのRunとは?

こちらでは、「Docker Run」コマンドについて詳しく説明します。

「Docker Run」の概念を理解することで、Dockerのエコシステムを効果的に操作する能力が高まるでしょう。

  • Docker Runの役割と目的
  • Dockerのコンテナイメージとその重要性

Docker Runの役割と目的

Docker Runは、Dockerコンテナを作成し、実行するためのDockerコマンドです。

このコマンドはDockerイメージを基に、アプリケーションを実行する独立した環境(コンテナ)を提供します。

コンテナ技術を通じて、アプリケーションの開発やデプロイ、テストが効率的になります。

docker run hello-world

hello-worldというDockerの公式で準備されたイメージで、コンテナを起動する例です。

Dockerのコンテナイメージとその重要性

Dockerのコンテナイメージは、アプリケーションを実行するために必要な全ての要素をパッケージ化したものです。

  • コード
  • ランタイム
  • ライブラリ
  • 環境変数 など

コンテナ技術により、異なる環境でも同じようにアプリケーションを動作させられるのです。

この性質はDockerが提供する「Build, Ship, and Run Any App, Anywhere」の哲学を実現しています。

Docker Runの基本的な使い方

次に、Docker Runの基本的な使い方をご覧いただきます。

以下のステップでDockerイメージの取得からコンテナの実行、終了までの一連の操作を見ていきましょう。

  • Dockerイメージの確認方法
  • Dockerイメージの取得方法
  • Dockerコンテナの生成と実行
  • Dockerコンテナの終了方法

Dockerイメージの確認方法

Dockerイメージの確認は、docker imagesコマンドでおこないます。

docker runで、コンテナを起動するためには、イメージが必要です。

このコマンドを実行すると、ローカルに保存されているDockerイメージの一覧が表示されます。

$ docker images

DockerHubなどに公開されているイメージであれば、PCにイメージが存在しない場合でも、docker runコマンドで自動取得してくれます。

Dockerイメージの取得方法

Dockerイメージはdocker pullコマンドで取得しましょう。

$ docker pull ubuntu

下のコマンドは、Docker HubからUbuntuイメージを取得します。

Dockerコンテナの生成と実行

docker runコマンドを用いて、Dockerイメージからコンテナを生成し、実行します。

以下のコマンドは、Ubuntuイメージを基に新しいコンテナを作成し、その中で/bin/bash(ターミナル)を実行します。

$ docker run -it ubuntu /bin/bash

Dockerコンテナの終了方法

実行中のコンテナは、/bin/bash画面で、exitコマンドを入力するか、Ctrl+Dを押すことで終了します。

もしくは以下のコマンドで終了させましょう。

docker stop <container-id>

以下の記事では複数のコンテナを一括で停止する方法なども説明しています。

Docker Runを詳しく見ていく

Docker Runの具体的な使い方を理解したところで、Dockerとその背後にある技術についてより深く理解しましょう。

Dockerと仮想化技術の違いや、コンテナ技術のメリットについて考察します。

  • Dockerと仮想化技術の違い
  • コンテナ技術とそのメリット

Dockerと仮想化技術の違い

従来の仮想化技術では、仮想マシン(VM)ごとにオペレーティングシステムを持つ必要がありました。

これに対し、Dockerは「コンテナ」という軽量な隔離環境を使用します。

コンテナは、ホストOSのリソースを共有しながら、各コンテナが独立して動作するように見せる技術です。

これにより、DockerはVMよりも軽量で高速に動作します。

コンテナ技術とそのメリット

コンテナ技術のメリットはその軽量性と移植性です。

アプリケーションとその依存関係をひとつのコンテナにパッケージ化することで、環境に依存せずにアプリケーションを動かせます。

またイメージのビルドからデプロイ、実行までの一連の流れを自動化することも容易です。

イメージを作るには、Dockerfileが必要です。以下の記事を参考に自身のイメージを作ってみてください。

Docker Runで活用できるオプション一覧

次に、docker runコマンドで活用できるオプションについて解説します。

これらのオプションを活用することで、コンテナの動作を細かく制御できるでしょう。

  • コンテナの名前や仮想端末の指定
  • コンテナのストレージ・オプションや作業ディレクトリの設定
  • ポート公開と露出、環境変数の設定
  • ネットワーク接続、ボリュームマウント、デバイス追加
  • メモリ制限やセキュリティの設定
  • オプションまとめ一覧

コンテナの名前や仮想端末の指定

docker run--nameオプションでコンテナに名前をつけられます。

$ docker run --name my_container -it ubuntu /bin/bash

また、-i-tオプションを組み合わせて(-it)、コンテナの標準入力を開いたままにし、対話型シェルとして使えます。

コンテナのストレージ・オプションや作業ディレクトリの設定

$ docker run -w /path/to/workdir -v /host/dir:/container/dir ubuntu

このコマンドは、作業ディレクトリを/path/to/workdirに設定し、ホストの/host/dirをコンテナの/container/dirにマウントする新しいUbuntuコンテナを生成して実行します。

ポート公開と露出、環境変数の設定

-pまたは--publishオプションでホストとコンテナのポートをマッピングできます。

また、-eまたは--envオプションでコンテナ内の環境変数を設定することが可能です。

以下のコマンドは、ホストの8080ポートとコンテナの80ポートをマッピングし、環境変数ENV_VARを設定します。

$ docker run -p 8080:80 -e ENV_VAR=value ubuntu

ネットワーク接続、ボリュームマウント、デバイス追加

Dockerコンテナはネットワークに接続することができ、--networkオプションを使用すると特定のネットワークに接続可能です。

また、-vまたは--volumeオプションでホストとコンテナ間でデータボリュームを共有したり、--deviceオプションでホストのデバイスをコンテナに追加したりもできます。

$ docker run --network=network_name -v /host/volume:/container/volume --device=/dev/device ubuntu

メモリ制限やセキュリティの設定

docker runコマンドには、リソース制限やセキュリティ設定など、より高度なオプションも多数存在します。

例えば、-mまたは--memoryオプションでコンテナのメモリ使用量を制限したり、--cap-add--cap-dropオプションでLinuxケーパビリティを追加・削除したりが可能です。

$ docker run -m 512m --cap-drop ALL --cap-add NET_BIND_SERVICE ubuntu

このコマンドは、メモリ使用量を512MBに制限し、全てのLinuxケーパビリティを削除した後、NET_BIND_SERVICEケーパビリティだけを追加する新しいUbuntuコンテナを生成して実行します。

オプションまとめ一覧

docker runコマンドには、上記のような基本的なものから高度なものまで、多くのオプションが用意されています。

以下は、上記も含めたdocker run コマンドの一部のオプションの一覧表です。

オプション説明
--nameコンテナに名前を付けます。docker run --name my_container ubuntu
-it対話モードでコンテナを実行し、端末を割り当てます。docker run -it ubuntu /bin/bash
-wコンテナ内の作業ディレクトリを設定します。docker run -w /path/to/workdir ubuntu
-vホストとコンテナ間でボリュームをマウントします。docker run -v /host/dir:/container/dir ubuntu
-pホストとコンテナ間でポートを転送します。docker run -p 8080:80 ubuntu
-e環境変数を設定します。docker run -e ENV_VAR=value ubuntu
--networkコンテナを特定のネットワークに接続します。docker run --network=network_name ubuntu
--deviceホストシステムのデバイスをコンテナに追加します。docker run --device=/dev/device ubuntu
-mコンテナのメモリ制限を設定します。docker run -m 512m ubuntu
--cap-dropコンテナから特定のLinuxケーパビリティを削除します。docker run --cap-drop ALL ubuntu
--cap-addコンテナに特定のLinuxケーパビリティを追加します。docker run --cap-add NET_BIND_SERVICE ubuntu
-dコンテナをバックグラウンドで実行します(デタッチモード)。docker run -d ubuntu
--rmコンテナが停止したら自動的に削除します。docker run --rm ubuntu
--restartコンテナの再起動ポリシーを設定します(例:alwayson-failureなど)。docker run --restart=always ubuntu

これらのオプションを組み合わせることで、コンテナの実行を高度にカスタマイズが可能です。

各オプションの詳細な説明と使用方法は、公式のDockerドキュメントで確認できます。

Docker Runの使用例と具体的な操作方法

Docker Runをより具体的に理解するために、具体的な使用例とその操作方法を見ていきましょう。

コマンドやオプションの理解を深め、実際の作業環境でのトラブルシューティングに役立ちます。

  • コンテナの作成から起動までのプロセス
  • オプションを使った具体的な使用例
  • 一般的な問題とその解決策

コンテナの作成から起動までのプロセス

コンテナの作成から起動までの一連の流れを体験しましょう。

まずは、docker runコマンドでhello-worldイメージを実行してみてください。

$ docker run hello-world

このコマンドを実行すると、Dockerは次の順序で操作を行います。

  1. ローカルでhello-worldイメージを探す
  2. イメージがなければ、設定されたリモートレジストリ(デフォルトではDocker Hub)からイメージをダウンロードする
  3. イメージから新しいコンテナを生成する
  4. コンテナを起動し、hello-worldプログラムを実行する

オプションを使った具体的な使用例

次に、いくつかのオプションを組み合わせてコンテナを起動する例を見てみましょう。

以下のコマンドでは、Nginxサーバを起動し、ホストの8080ポートとコンテナの80ポートをマッピングします。

$ docker run -d -p 8080:80 --name my-nginx nginx

ポートのマッピングでは、以下のように指定します。

-p <PCでブラウザに打ち込むポート番号>: <コンテナで実際に使われているポート番号>

このコマンドを実行すると、以下の操作が行われます。

  1. NginxイメージをローカルまたはDocker Hubから取得します
  2. イメージから新しいコンテナを生成します
  3. コンテナをバックグラウンドモード(-d)で起動し、Nginxサーバを実行します
  4. コンテナの名前をmy-nginx(--name)に設定します
  5. ホストの8080ポートとコンテナの80ポートをマッピング(-p)します

一般的な問題とその解決策

Docker Runの使用中にはさまざまな問題が生じる可能性がありますが、以下にいくつかの一般的な問題とその解決策を示します。

  1. イメージが見つからない
    ローカルまたはリモートのDockerレジストリに指定したイメージが存在しない場合、この問題が発生します。
    イメージ名とタグが正しいことを確認し、必要であればdocker pullコマンドを使用して明示的にイメージをダウンロードしてみてください。
  2. ポート競合
    同じホストポートを複数のコンテナで使用しようとすると、ポート競合が発生します。
    競合するコンテナを停止するか、異なるホストポートを使用してください。
  3. コンテナがすぐに終了する
    コンテナが起動後すぐに終了する場合、多くの場合、コンテナ内のプログラムが何らかのエラーで終了しています。
    docker logsコマンドを使用してコンテナのログを確認し、問題の原因を特定してください。

Docker操作の次のステップ

DockerはRunコマンドだけでなく、ほかにも多くの機能を持っています。

以下に、Docker操作の次のステップとして学べる内容をいくつか紹介します。

  • Docker Run以外のDockerのコマンド
  • Dockerのさらなる活用方法

Docker Run以外のDockerのコマンド

Dockerには、以下のような多くの他のコマンドが存在します。

  • イメージのビルド(docker build)
  • イメージのプッシュとプル(docker push/docker pull)
  • コンテナのログの表示(docker logs)
  • コンテナの一覧表示(docker ps)

これらのコマンドを学ぶことで、Dockerをより深く理解し、より効率的に利用できます。

Dockerのさらなる活用方法

Dockerは単体で使用するだけでなく、Kubernetesなどのコンテナオーケストレーションツールと組み合わせることで、さらにパワフルなソリューションを提供します。

また、Docker ComposeやDocker SwarmといったDocker自体の機能を使って、マルチコンテナアプリケーションのデプロイメントを管理することも可能です。

これらのツールとテクニックを学ぶことで、Dockerをさらに活用できるでしょう。

まとめ

当記事では、「Docker Run」について詳しく説明しました。

  • Docker Runの役割と目的
  • 基本的な使い方と詳細な説明
  • 活用できるオプション一覧
  • 具体的な使用例と操作方法
  • Docker操作の次のステップ

Docker Runは、Dockerエコシステムの中心的なコマンドのひとつであり、コンテナの作成から起動までを一括しておこなえます。

これはDockerの柔軟性と効率性に大いに貢献しています。

当記事が、Docker Runの理解と活用の助けとなることを願っています。

タイトルとURLをコピーしました