Dockerの操作は、基本的にdockerコマンドを使用して行います。
dockerコマンドには数多くのオプションが用意されていまして、目的に応じて使い分けます。
「Kitematic」というGUIの管理ツールもあるのですが、dockerコマンドで可能なすべてのことができるわけではありません。
Dockerに詳しい方がサクッと操作をするためにはとても良いツールだと思いますが、「Kitematic」でDockerを詳しく学ぶという目的には向かないと思います。
これからDockerを学ばれる方はdockerコマンドを使用されることをオススメします。
本記事では、数あるdockerコマンドの中で「よく使うDockerコマンド」を紹介しております。
Docker仮想環境を利用する上でさけて通れないコマンドばかりを掲載してます。
お役に立てれば幸いです。
実例と共に詳細なコマンドの解説を、別記事「Dockerのコマンドの一覧(オリジナルな実例付き)」にも掲載させていただいております。合わせてご利用いただければと思います。
本記事に掲載しているdockerコマンド一覧
本記事時掲載していますdockerコマンドは以下のとおりです。
Dockerイメージを入手するコマンド
docker pull | DockerHubからDockerイメージを取得する |
docker build | dockerfileを読み込んでDockerイメージを 作成する |
Dockerコンテナを作成するコマンド
docker run | 指定したDockerイメージを使用して Dockerコンテナを起動する |
Dockerコンテナを操作するコマンド
docker start | Dockerコンテナを起動する |
docker stop | Dockerコンテナを停止する |
docker restart | Dockerコンテナを再起動する |
docker exec | Dockerコンテナ内で指定プログラムを 実行する |
状態確認系コマンド
docker ps | Dockerコンテナの状態を確認する |
docker images | Dockerイメージの一覧を表示する |
各コマンドについて順に説明していきます。
Dockerイメージを入手するコマンド
Dockerの仮想マシンであるDockerコンテナを作るためにはDockerイメージが必要です。
Dockerイメージを入手する方法は、DockerHubというDocker公式のレジストリからダウンロードする方法とご自分で作成する方法の2つあります。
docker pull
DockerHubから指定したDockerイメージをダウンロードします。
ダウンロードしたDockerイメージは、ローカル内のイメージ置き場に格納されます。
フォーマット
docker pull [オプション] Dockerリポジトリ名[:タグ名]
代表的なオプション
-a 指定したリポジトリ内の全Dockerイメージの取得
使い方
DockerHubは、DockerレジストリというDocker公式のイメージ配信システムのことです。様々なDockerイメージが格納されており、必要なものを検索して入手することができます。
DockerHubには作成したDockerイメージを登録することも可能です。
このコマンドを実行しますとDockerHUB内のDockerイメージが検索され、存在する場合は入手することができます。
DockerHub内には、CentOSのDockerイメージなど、数多くのベンダーが公式のDockerイメージを提供しています。
例えば、CentOSの最新の公式Dockerイメージが欲しい場合は以下のコマンドを実行します。
$ docker pull centos
docker build
dockerfileという定義ファイルを使用してDockerイメージを作成するためのコマンドです。
フォーマット
docker build [オプション] [パス]
代表的なオプション
-rm Dockerイメージ作成過程で生成された中間イメージファイルを削除する
-t Dockerイメージ名を指定する
使い方
このコマンドは、Dockerfileを読み込んで、その中に書かれている処理を行うことでDockerイメージを作成します。
コマンドは以下のように実行します。
$ docker build -rm -t <Dockerイメージ名> .
実行しますと、<Dockerイメージ名>で指定した名前のDockerイメージが作成されます。
最後の「.」はdockerfileの場所を指定しています。カレントディレクトリ上のdockerfileを読み込むという意味です。
Dockerコンテナを作成するコマンド
Dockerコンテナは、事前に入手してあるDockerイメージを使用して作成します。
docker run
指定したDockerイメージを使用してDockerコンテナを作成し、そのDockerコンテナを起動します。
フォーマット
docker run [オプション] Dockerイメージ名 [コマンド]
代表的なオプション
-d Dockerコンテナをバックグラウンドで実行する
-p Dockerコンテナのネットワークポートを外部に公開する
-v Dockerコンテナにデータボリュームをマウントする
使い方
Dockerコンテナを作成する場合によく利用されるコマンドになります。
オプションはかなり細かく指定できます。詳細はDocker公式ドキュメントをご覧ください。
代表的な挙げました3つのオプションを簡単にご紹介します。
-d オプション
Dockerコンテナをバックグラウンドで実行するためのオプションです。サービスとして常駐させたいDockerコンテナを起動する場合に指定します。
-p オプション
Dockerコンテナ内の指定したネットワークポートを外部に公開する、もしくはDockerホスト内の指定したネットワークポートにひもづける場合に使用します。
形式は以下のとおりです。
-p <Dockerホスト内ポート>:<Dockerコンテナ内ポート>
例えば、Dockerコンテナ内の80番をDockerホストの8080番ポートにひもづける場合は、以下のように指定します。
-p 8080:80
-v オプション
Dockerコンテナ内の指定ディレクトリ以下のファイルをデータボリュームにマウントする場合に指定します。
-v <データボリューム>:<Dockerコンテナ内マウントポイント>
データボリュームは、Dockerにおける仮想Diskに相当するものでして、Dockerコマンドで作成します。また、Dockerホスト内の特定のディレクトリをデータボリュームとして直接指定することも可能です。
例えば、Dockerコンテナ内の「/data」というディレクトリを、Dockerホストの/usr/dataに紐付ける場合は、以下のように指定します。
-v /usr/data:/data
Dockerコンテナを操作するコマンド
Dockerコンテナの起動や停止、再起動を行うためのコマンドです。
docker start
停止中のDockerコンテナを起動します。
フォーマット
docker start [オプション]
代表的なオプション
無し
使い方
停止中のDockerコンテナを起動するコマンドです。
$ docker start myapp01
起動するDockerコンテナを複数指定する場合は、スペース区切りで記述します。
$ docker start myapp01 myapp02
複数のDockerコンテナを指定して実行した場合、先頭から順に起動されます。
docker stop
起動中のDockerコンテナを停止します。
フォーマット
docker stop [オプション]
代表的なオプション
無し
使い方
起動中のDockerコンテナを停止するコマンドです。
$ docker stop myapp01
停止するDockerコンテナを複数指定する場合は、スペース区切りで記述します。
$ docker stop myapp01 myapp02
複数のDockerコンテナを指定して実行した場合、先頭から順に停止されます。
docker restart
起動中のDockerコンテナを再起動します。停止中のDockerコンテナをrestartしますと起動します。
フォーマット
docker restart [オプション]
代表的なオプション
無し
使い方
このコマンドは、Dockerコンテナの再起動を行います。
$ docker restart myapp1
再起動するDockerコンテナを複数指定する場合は、スペース区切りで記述します。
$ docker restart myapp01 myapp02
複数のDockerコンテナを指定して実行した場合、先頭から順に再起動されます。
docker exec
指定したコマンドやスクリプトをDockerコンテナ内部で実行することができます。
フォーマット
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コンテナ内でbashが起動され、そのプロンプトが表示されます。
$ docker exec -it xxxxxxxxxxxx bash
Dockerコンテナ内でシェルを使用してオペレーションを行いたい場合に頻繁に使います。
状態確認系コマンド
Docker環境内のリソース情報(一覧や属性情報など)を表示するためのコマンドになります。
使用頻度の高いコマンドです。
docker ps
作成済みのDockerコンテナの一覧を表示することができます。
フォーマット
docker ps [オプション]
代表的なオプション
-a 全てのDockerコンテナの一覧を出力する
(オプション無しの場合は起動しているもののみ出力)
使い方
このコマンドは、Dockerホスト内に存在するDockerコンテナの一覧を表示します。
出力される情報は、以下のとおりです。
名称 | 説明 |
---|---|
CONTAINER ID | Dockerコンテナに自動的に割り振られるユニークID |
IMAGE | DockerコンテナのベースDockerイメージ |
COMMAND | Dockerコンテナ起動時のコンテナ内で実行されたコマンド |
CREATED | Dockerコンテナが生成された時期 |
STATUS | Dockerコンテナの状態と稼働時間 |
PORTS | 公開されているDockerコンテナのネットワークポート |
NAMES | Dockerコンテナにつけられた名前。Dockerコンテナ起動 時に無指定の場合は自動設定される。 |
Dockerコンテナの名前やコンテナIDを調べるときに良く利用されます。
また「-a」を付けて実行し、停止しているDockerコンテナを把握する目的で利用します。
docker images
入手済みのDockerイメージの一覧を表示することができます。
フォーマット
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イメージ名を表します。
リポジトリ名を指定することで、特定のリポジトリのみ表示することも可能です。リポジトリ名の指定は完全一致です。
おわりに
数あるDockerコマンドの中から特に使用頻度の高いものをご紹介しました。
これからDockerを学ばれる方は、本記事のコマンドやその使い方をザっとご覧になって、Dockerとはどんな感じのものかをつかんでいただきたいです。
dockerコマンドの仲間にdocker-composeというコマンドがあります。こちらは複数のDockerコンテナを一括で操作するときに便利なコマンドです。
最初は単独のDockerコンテナを操作すると思いますが、先々は複数のDockerコンテナをひとつのサービスとして利用するときもあるでしょう。
その時はぜひdocker-composeコマンドをご利用いただければと思います。
別記事「dockerとdocker-compose ふたつのDockerクライアントの使い分けについて」でdocker-composeコマンドについて解説しておりますので、よろしかったらご利用ください。
最後までお読みいただきありがとうございました!
コメント