Linux

docker run コマンドのパターン覚書

投稿日:2020年7月1日 更新日:

1. はじめに

docker run コマンドの実行パターンをまとめます。

但し、複雑な使い方はしません。

2. docker run コマンドについて

docker run コマンドは、引数で指定されたイメージを元にコンテナを生成し、同じく引数で指定されたコマンドを使ってこのイメージを開始します。

フォーマット

docker run コマンドのフォーマットは以下になります。

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

主なオプション

docker run コマンドの主なオプションを表にしました。

オプション 説明
-i
  • アタッチされていなくても標準入力を開いたままにする。
-t
  • 擬似端末が割り当てられる。
–rm
  • コンテナが Exited になったときに、コンテナを自動的に削除する。
-v
  • ホスト側のディレクトリをコンテナ側にマウントする。
-w
  • コンテナ内のワーキングディレクトリ
  • コマンドは、このディレクトリ直下で実行される。

参考

3. コンテナの状態遷移図

コンテナの主要な状態だけを使って遷移図を書いてみました。

コンテナの状態遷移図

UpExited というのは、docker container ls コマンドを実行すると STATUS列に表示される状態の名前です。Up は稼働中、Exited は停止中といった意味になります。

4. 特定のコマンドを実行する場合

4-1. インタラクティブな処理がない場合

php:latest というイメージを利用して、php コマンドを実行する例です。

docker run --rm -v $(pwd):/app -w /app php:latest php hello.php
  • --rm を付けておけば、コマンド終了時にコンテナが自動的に削除されます。

4-2. インタラクティブな処理がある場合

php:latest というイメージを利用して、php コマンドを実行する例です。

docker run -it --rm -v $(pwd):/app -w /app php:latest php hello.php
  • インタラクティブなコマンドを実行する場合は、-it オプションを指定します。

5. サーバー(デーモン)を動かす場合

5-1. サーバーをフォアグラウンドで起動する

php:apache というイメージを利用して、Apache + PHP をフォアグラウンドで起動します。

docker run --rm -p8080:80 -v $(pwd):/var/www/html php:apache
  • --rm は任意です。

5-2. サーバーをバックグラウンドで起動する

php:apache というイメージを利用して、Apache + PHP をバックグラウンドで起動する

docker run -d -p8080:80 php:apache
  • -d は必須です。

6. Linux のシェルに入る場合

alpine:latest というイメージを利用して、apline のシェルに入る場合

docker run -it alpine:latest /bin/ash
  • インタラクティブなやり取りになるので、-it を指定します。

7. 参考

📂-Linux

執筆者:labo


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

Linux

umask によって適用されるパーミッションの確認ページを作成しました

Linux (や Mac) では、ファイルやディレクトリに「パーミッション」を設定することでアクセスを制限します。 パーミッションは、「所有者」「所有グループ」「その他」の3者に対して、 ファイルなら …

Let's Encrypt

Let’s Encrypt でワイルドカードを使う

手持ちの CentOS 7 に入れてある certbot パッケージが バージョン 0.22.0 になり、Let’s Encrypt のワイルドカードに対応しましたので試してみました。 目 …

Let's Encrypt

Let’s Encrypt を使ってみました

無料でSSL証明書が発行できる Let’s Encrypt を使ってみました。 その時の操作手順を紹介します。 本記事執筆時に存在していた「Let’s Encrypt 総合ポー …

docker

CentOS 上の Docker にウェブサーバーを入れて80番以外のポートで公開することができない問題【未解決】

CentOS 7 上の Dockerコンテナ にウェブサーバーを入れた場合、80番以外のポートで公開することはできないようです。 例えば、 まず、firewall-cmd コマンドで 8080番ポート …

CentOS

CentOS 8 で Snap から certbot パッケージをインストールする

CentOS 8 で Snap から certbot パッケージをインストールする方法について説明します。