よく使うDockerコマンドの一覧


 本ページでは、「よく使うDockerコマンドの一覧」を紹介させていただいてます。

 実例と共に、より詳細なコマンド解説を、別記事「Dockerのコマンドの一覧(ver1.12対応版)(オリジナルな実例付き)」にも掲載させていただいております。よろしければご利用ください。

 Dockerコマンド名部分のリンクをクリックしていただくと、そのコマンドの説明が表示されます。

コマンド一覧

 

コマンド紹介

 

docker ps

フォーマット

docker ps [オプション]

代表的なオプション
-a 全てのDockerコンテナの一覧を出力する
(オプション無しの場合は起動しているもののみ出力)

使い方

 このコマンドは、現在Dockerホスト内に存在するDockerコンテナの一覧を出力するコマンドになります。

 以下のとおり実行します。

$ docker ps

 

 出力される情報は、以下のとおりです。

名称 説明
CONTAINER ID Dockerコンテナに自動的に割り振られるユニークID
IMAGE DockerコンテナのベースDockerイメージ
COMMAND Dockerコンテナ起動時のコンテナ内で実行されたコマンド
CREATED Dockerコンテナが生成された時期
STATUS Dockerコンテナの状態と稼働時間
PORTS 公開されているDockerコンテナのネットワークポート
NAMES Dockerコンテナにつけられた名前。Dockerコンテナ起動
時に無指定の場合は自動設定される。

 

 私の場合、このコマンドを実行する目的のほとんどが、DockerコンテナのコンテナIDを調べることです。

 Dockerコンテナに対する操作を行うコマンドを実行する場合、対象のDockerコンテナを指定するために、コンテナID(もしくはコンテナ名)を使用します。

 Dockerコンテナ自体に名前を付けることで、その名前を指定してコマンドを実行することも可能ですが、Dockerコンテナ毎にユニークな名前を付けるのが面倒なので、コンテナIDを使用してます。

 Dockerコンテナの名前を指定しなかった場合は、ランダムなそれっぽい名前が自動的に付けられるのですが、その名前を使うのでしたら、コンテナIDを使った方が良いのではないかと思います。

 

 「-a」オプションを省略した場合は、起動中のDockerコンテナのみが表示され、「-a」を付けると全てのDockerコンテナが表示されます。

 停止中のコンテナを起動したり、不要になったDockerコンテナを削除するために、対象のDockerコンテナを探す場合は「-a」を付けて実行します。

 出力されたDockerコンテナの一覧から目的のコンテナを見つける際には、ベースDockerイメージ名(IMAGE)と公開ネットワークポート(PORTS)と名前(NAMES)を見て区別しています。

コマンド一覧に戻る


docker exec

フォーマット

docker exec [オプション] [コンテナ] [コマンド]

代表的なオプション
-d デーモンモードでコマンドを実行する
-t 仮想TTYを割り当てる
-i 標準入力を紐付ける

使い方

 このコマンドは、実行中のDockerコンテナ内で、指定したコマンドを実行します。Dockerコンテナの外側から、Dockerコンテナ内で実行するコマンドを指定して実行することが出来ます。

 例えば、以下のコマンドを実行すると、ディレクトリの一覧が出力されますが、それはDockerコンテナ内のディレクトリの一覧になります。

$ docker exec xxxxxxxxxxxx ls -l /var
drwxr-xr-x 2 root root 6 Dec 24 2014 backups
drwxr-xr-x 7 root root 67 Jun 18 07:11 cache
drwxr-xr-x 12 root root 143 Jul 12 07:43 lib
drwxrwsr-x 2 root staff 6 Dec 24 2014 local
lrwxrwxrwx 1 root root 9 Apr 21 2015 lock -> /run/lock
drwxr-xr-x 5 root root 4096 Apr 22 2015 log
drwxrwsr-x 2 root mail 6 Apr 21 2015 mail
drwxr-xr-x 2 root root 6 Apr 21 2015 opt
lrwxrwxrwx 1 root root 4 Apr 21 2015 run -> /run
drwxr-xr-x 2 root root 17 Apr 21 2015 spool
drwxrwxrwt 2 root root 6 Dec 24 2014 tmp

※コマンド内の「xxxxxxxxxxxx」部分はDockerコンテナのIDです

 Dockerコンテナ内でシェルを使用してオペレーションを行いたい場合に頻繁に使います。

$ docker exec -it xxxxxxxxxxxx bash

 このコマンドを実行しますと、指定したDockerコンテナ内でbashが起動され、そのプロンプトが表示されます。

コマンド一覧に戻る


docker start

フォーマット

docker start [オプション]

代表的なオプション
特記無し

使い方

 停止中のDockerコンテナを起動するコマンドです。

$ docker start myapp01

 

 起動するDockerコンテナは、スペース区切りで複数指定可能です。

$ docker start myapp01 myapp02

 複数のDockerコンテナを指定して実行した場合、指定したコンテナIDの先頭から順に画面に表示されていきますので、未検証ですが、指定した順番にDockerコンテナが起動されていくのだと思います。

 但し、Dockerコンテナ間の依存関係が重要な場合、例えばアプリケーションサーバとDBサーバで構成されているシステムの場合などは、このコマンドでDockerコンテナを複数指定する使い方はおすすめ出来ないと思います。試していませんが、前の起動が完了してから次のDockerコンテナを起動するという制御は行わないと思われます。(宿題とさせてください)

 依存関係が重要な場合は、Docker標準ツールのdocker-composeというものがありますので、そちらをおすすめします。

 

 停止中のDockerコンテナを見つけるためには、「docker ps -a」を実行します。

 

 このコマンドのオプションについてですが、Dockerコンテナの入出力関係のオプションがいくつか用意されてますが、残念ながら私は使ったことはありません。もし使い道が見つかりましたら追記したいと思います。

コマンド一覧に戻る


docker stop

フォーマット

docker stop [オプション]

代表的なオプション
特記無し

使い方

 起動中のDockerコンテナを停止するコマンドです。

$ docker stop myapp01

 

 停止するDockerコンテナは、スペース区切りで複数指定可能です。

$ docker stop myapp01 myapp02

 複数のDockerコンテナを指定して実行した場合、「docker start」コマンドと同様に、指定したコンテナIDの先頭から順に画面に表示されていきますので、未検証ですが、指定した順番にDockerコンテナが停止されていくのだと思います。

 但し、これも「docker start」コマンドと同様ですが、Dockerコンテナ間の依存関係が重要な場合などは、このコマンドはおすすめしません。

 

 このコマンドは、Dockerコンテナを停止する場合、まずSIGTERM(OSから終了の意思を伝えてもらう)を送信して、一定時間後にSIGKILL(OSが強制終了を試みる)を送信するようです。(Docker公式サイト情報<ver 1.12.RC>)

 「-t」オプションを指定することで、SIGTERMを送信してからSIGKILLを送信するまでの時間を設定できるます。デフォルトは10秒です。

コマンド一覧に戻る


docker restart

フォーマット

docker restart [オプション]

代表的なオプション
特記無し

使い方

 このコマンドは、Dockerコンテナの再起動を行います。

$ docker restart myapp1

 

 apacheコンテナなどで、定義ファイルを変更した後などに良く使用してます。

 オプションとして、「docker stop」と同じような「-t」オプションが用意されてます。

コマンド一覧に戻る


docker info

フォーマット

docker info [オプション]

代表的なオプション
なし

使い方

 Docker環境のかなり広範囲なシステム情報を表示します。

$ docker info

 以下は出力内容の概要です。

・ Dockerコンテナの稼働状況(起動数、停止数、一時停止数、イメージ数)
・ Dockerストレージ情報(種類、リソース使用状況など)
・ カーネル関連ドライバ情報(ログ出力、cgroupsなど)
・ Dockerホスト情報(カーネルバージョン、リソース情報、など)
・ Dockerレジストリ情報(デフォルトレジストリ、内部レジストリなど)

 

 Dockerシステム管理には必須なコマンドの1つと思います。

 私はまだ行っておりませんが、そのうち、このコマンドを定期的に出力して、解析する運用を行うようになると思います。

 Dockerシステム管理的なツールは世の中にいっぱい存在していると思いますので、そちらを利用してしまうかもしれませんが・・・。

コマンド一覧に戻る


docker build

フォーマット

docker build [オプション] [パス]

代表的なオプション
-rm Dockerイメージ作成過程で生成された中間イメージファイルを削除する
-t Dockerイメージ名を指定する

使い方

 このコマンドは、Dockerfileを読み込んで、その中に書かれている処理を行い、その処理完了後の状態をDockerイメージとして出力するためのコマンドになります。

 色々な使い方があるようですが、私はまずDockerfile作成し、そのファイルがあるディレクトリ上で、以下のオプションで使っています。

$ docker build -rm -t <Dockerイメージ名> .

 ネットで調べていると、他にもいろいろ便利な機能があるみたいなので、今後良いものを見つけ次第、ここを更新していこうと思います。

コマンド一覧に戻る


docker pull

フォーマット

docker pull [オプション] Dockerリポジトリ名[:タグ名]

代表的なオプション
-a 指定したリポジトリ内の全Dockerイメージの取得

使い方

 リモートのDockerレジストリからDockerイメージを入手するときに使用します。

 Dockerレジストリとは、Dockerイメージ配信システムのことです。様々なDockerイメージが格納されており、必要なものを検索して、入手することが可能です。もちろん作成したDockerイメージを登録することも可能です。有名なものとして、DockerHUBと呼ばれるDocker社の公式Dockerレジストリがあります。

 このコマンドを実行した場合、デフォルトでは、DockerHUB内のDockerイメージが検索され、存在する場合は入手することが可能です。

 Dockerイメージ名は、「リポジトリ名:タグ名」から構成されます。

 DockerHUB内にはCentOSの公式Dockerイメージが格納されてます。リポジトリ名は「centos」です。このリポジトリには、バージョン7用のイメージやバージョン6用のイメージなど、色々なバージョンのCentOSイメージがあります。

 例えば、バージョン7用のcentosのDockerイメージを入手する場合は、

centos:7

というように「7」というタグを付けます。

 タグ名を省略した場合は、「latest」という「最新版」を意味するタグが付与されます。

 例えば、以下のコマンド

$ docker pull centos

を実行すると、centosの最新版Dockerイメージ「centos:latest」が入手できます。

 もし、centosのバージョン6.8が欲しい場合は

$ docker pull centos:6.8

を実行します。

 タグ名は、DockerHUBの各Dockerイメージのコーナー内の説明欄に記載されてますので、ご確認ください。

 オプション部に「-a」を付けてリポジトリを指定して実行した場合は、そのリポジトリ内の全てのDockerイメージを入手することが出来ます。

 試しに以下を実行してみました。

$ docker pull -a debian

 実行後に「docker images」で確認したところ、「debian」リポジトリの複数のDockerイメージが格納されていました。

 数が多いので出力結果は省略させてください。

コマンド一覧に戻る


docker images

フォーマット

docker images [オプション] [リポジトリ]
代表的なオプション
-a 出力に中間イメージも含む
-f 一覧の出力にフィルターを使用する

使い方

 Dockerホスト内のDockerイメージ格納先に保管されているDockerイメージの一覧を表示します。

$ docker images
REPOSITORY  TAG    IMAGE ID       CREATED         SIZE
centos      latest 05188b417f30   8 weeks ago     196.8 MB
mariadb     latest 0112f2662974   11 weeks ago    387.6 MB

 表示される内容は、左から、リポジトリ名、タグ名、イメージID、作成時期、イメージサイズです。リポジトリ名とタグ名を合わせてDockerイメージ名を表します。

 リポジトリ名を指定することで、特定のリポジトリのみ表示することも可能です。リポジトリ名の指定は完全一致です。

 たまに使うオプションとして、「-a」と「-f」があります。

 「-a」は、中間イメージ(Dockerイメージ内の中間レイヤのイメージ)も含めて出力する場合に使用します。

 「-f」は、出力するDockerイメージのフィルタ条件の指定です。「dangling」フィルターはたまに使います。
 これは、Dockerコンテナとの紐付きが切れて、使用されなくなったDockerイメージを表示する場合に使います。
 Dockerは、Dockerコンテナを削除しても、Dockerコンテナ自体のDockerイメージは削除しません。オプションを付けて削除すると消えるのですが、忘れがちです。
 このようなゴミDockerイメージを掃除する際に、削除対象Dockerイメージを調べる場合に使います。

コマンドは以下のとおりです。

$ docker images -f "dangling=true"

コマンド一覧に戻る


docker run

フォーマット

docker run [オプション] Dockerイメージ名 [コマンド]

代表的なオプション
-d Dockerコンテナをバックグラウンドで実行する
-p DockerコンテナのネットワークポートをDockerホストに公開する
-v Dockerコンテナに外部ストレージをマウントする

使い方

 Dockerイメージを使用して、Dockerコンテナを起動する場合に使用するコマンドです。

 オプションはかなり細かく指定出来(へたしたら1冊の本が書けるくらい)ますので、ここで全てを説明することは無理です。「docker run --help」でご確認下さい。

 良く使うオプションとして、ほんの一部ですが、「-d」「-p」「-v」を紹介したいと思います。

  • -d オプション

 Dockerコンテナをバックグラウンドで実行するためのオプションです。サービスとしてDockerコンテナを起動する場合は指定します。

 

  • -p オプション

 形式: -p <Dockerホスト内ポート>:<Dockerコンテナ内ポート>

 Dockerコンテナ内の指定したネットワークポートをDockerホストに晒す、若しくはDockerホスト内の指定したネットワークポートに紐付る場合に指定します。

 例えば、Dockerコンテナ内の80番をDockerホストの8080番ポートに紐付ける場合は、以下のように指定します。

-p 8080:80 

 この指定を行いますと、Dockerホスト以外のサーバから、Dockerホストの8080番ポートにアクセスすることで、Dockerコンテナにアクセスすることが可能となります。

 

  • -v オプション

形式: -v Dockerホスト側ソース:Dockerコンテナ内ソース(:オプション)

 Dockerコンテナ内の指定ディレクトリ以下のファイルの永続化(Dockerコンテナが消えてもファイルは消えない)を行う場合に指定します。

 「Dockerホスト側ソース」は、Dockerボリューム(Docker管理下の仮想ボリューム)、もしくはDockerホスト内に存在する実ディレクトリ(絶対パス指定)を指定します。

 「Dockerホスト側ソース」は、省略も可能です。省略した場合は、Dockerが自動的に作成したDockerボリューム(名前はランダム)がアサインされます。

 「Dockerコンテナ内ソース」は、Dockerコンテナ内の永続化したいディレクトリを指定します。

 例えば、Dockerコンテナ内の「/data」というディレクトリを、Dockerホストの/usr/dataに紐付ける場合は、以下のように指定します。

-v /usr/data:/data

 

コマンド一覧に戻る


コメントを残す

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください