tands_bの日記

技術メモ。大したことは書きません

【Docker】dockerコマンド基礎

前置き

 基本的なコマンド一覧を載せています。全てのコマンドを載せているわけではないので詳しくはhelpで確認してみてください。
docker --help

コンテナ操作・管理

 Dockerコンテナの管理や操作を行うコマンド群。docker <コマンド>で実行する形になる。

コマンド 概要
run 新規コンテナを起動する。
create イメージからコンテナ作成を行う。但しrunと異なりコンテナの起動は行わない。
start 停止しているコンテナを起動する。
stop 起動しているコンテナを停止する。-tオプションでプロセスがkillされるまでの待機時間を設定できる。
restart コンテナを再起動する。-tオプションでプロセスがkillされるまでの待機時間を設定できる。
pause 指定されたコンテナ内の全プロセスをサスペンドする。
内部的にはLinuxのcgroupsのfreezer機能を使用している。
unpause pauseしているコンテナの全プロセスを動かす。
attach 指定したコンテナの標準入力、標準出力、エラー出力をローカルのターミナルに表示することができる。
cp コンテナ・ホスト間でファイルやディレクトリのコピーを行う。
exec 起動中のコンテナでコマンドを実行する。sshの代わりとして使用できる。
docker exec <コンテナID> echo "Hello"
kill 起動中コンテナのメインプロセスを停止させる。
rm コンテナを削除する。
diff 現在のコンテナの状態と起動元イメージのファイルシステム差分を表示する。
events Dockerデーモンのリアルタイムイベントを出力する。
inspect 指定されたコンテナ・イメージの詳細情報を表示する。
logs コンテナのSTDERRやSTDOUTに書き出された内容(ログ)を表示する。
port 指定されたコンテナの公開ポートのマッピングリストを表示する。
ps 現在のコンテナ群に関す情報を表示する。
top 指定されたコンテナ内で実行中のプロセス情報を表示する。

runコマンド

 runコマンドによって新規コンテナを起動することができる。使用されることの多いオプションは以下の通り。

コマンド オプション 概要
run -a 指定されたストリーム(stdout, stderrなど)をターミナルにアタッチする。
-d コンテナをバックグラウンドで実行する。
-i stdinをオープンにしたままに保ち、-tと一緒に使われることが多い。
-t 擬似的なTTY(端末デバイスの名前)を割り当てる。
-i と併用することでsshで接続したかのように操作することができる。
--restart コンテナの再起動設定を行う。noを指定するとリスタートなし、
alwaysは終了ステータスに関わらず再起動、
on-failureは0以外のステータスで終了した場合に再起動。
リトライ回数も指定できる。
--rm 終了時にコンテナを自動的に削除する。-dとの併用不可。
-e コンテナ内の環境変数を設定する。
docker run -e <変数>=<値> debian
--env-file ファイルから変数を渡せる。
-h Unixホスト名を設定する。
--name 名前をコンテナに割り当てる。
-v ホスト側のディレクトリをコンテナ内にマウントすることができる。
docker run -v <ホスト側のパス>:<コンテナ側のパス> debian
--volumes-from 指定したコンテナからボリュームをマウントする。
docker run --volumes-from <コンテナ名> debian
--expose コンテナで使用されるポートを指定する。但しオープンする場合は-pオプションと一緒に使用する。
--link 指定されたコンテナに対するプライベートなNetworkInterfaceをセットアップする。
-p コンテナのポートを公開する。ホストからアクセス可能になる。ホストのポートが指定されていない場合は大きいポート番号がランダムに使用される。
--entrypoint コンテナのENTRYPOINTを設定する。DockerfileないのENTRYPOINT命令は全て上書きされる。
-u コマンドを実行するユーザを設定るす。
-w コンテナ中の作業ディレクトリを設定する。

rmコマンド

 コンテナを削除するコマンド。デフォルトではボリュームを削除しない。よく使用するオプションは以下の通り。

コマンド オプション 概要
rm -f 実行中のコンテナを削除する。
-v 削除するコンテナが作成したボリュームも削除する。

[TIPS]

# 全コンテナ削除
docker rm $(docker ps -aq)

cpコマンド

# ローカルファイルをコンテナにコピー
docker cp <ローカルファイルパス> <コンテナID>:<ファイルパス>

# コンテナファイルをローカルにコピー
docker cp <コンテナID>:<ファイルパス> <ローカルファイルパス>

イメージ管理・操作

 Dockerイメージを扱うコマンド群を紹介します。

コマンド 概要
images ローカルのイメージリストを表示する。-qオプションを使用することでIDのみ表示させられる。
history イメージの各例やの情報を表示する。
build Dockerfileからイメージを構築する。
commit 指定されたコンテナからイメージを生成する。一般的には再現しやすいDockerfileから構築する方が汎用性が高い。
export コンテナのファイルシステム内容をtarファイルとしてSTDOUTに出力する。ポートなどのメタデータやボリュームは出力されない。
import ファイルシステムを含むアーカイブからイメージを生成する。ポートなどのメタデータは読み込まれない。
save イメージもしくはリポジトリをtarアーカイブにしてSTDOUTにストリーム出力する。メタデータを保持させることが可能。
load STDIN経由で渡されたtarアーカイブからリポジトリを生成する。このイメージには履歴とメタデータが含まれ、saveコマンドによって生成されたアーカイブを利用する。
rmi 指定されたイメージを削除する。タグ名が指定されていない場合はlatestが削除される。また、rimコマンドはリポジトリごとに実行する必要がある。
tag イメージにリポジトリとタグ名を関連づける。

tagコマンド

 イメージにリポジトリとタグ名を関連づけるコマンド。具体的な使用例は以下の通り。

# リポジトリにイメージを追加。タグはlatestになる。
$ docker tag <イメージID> <リポジトリ名>

# タグを設定してリポジトリにイメージを追加。
$ docker tag <イメージ名>:<ローカルタグ名> <リポジトリ名>:<タグ名>

レジストリ利用

 Docker Hubを含むレジストリを利用するためのコマンド群を紹介します。

コマンド 概要
login 指定されたレジストリサーバへ登録やログインを行う。サーバの指定がない場合はDocker Hubが使用される。
logout レジストリからログアウトする。
pull 指定されたイメージをレジストリからダウンロードする。タグが指定されなかった場合はlatestタグ(公式またはそれに準じたもの)のついたイメージがダウンロードされる。
docker pull <イメージ名>:<タグ名>
docker pull <ホスト名>:<ポート番号>/<リポジトリパス>:<タグ>
push イメージもしくはリポジトリレジストリにアップロードする。タグ指定がない場合はリポジトリ内の全イメージがアップロードされる。
search 検索条件にマッチしたDocker Hub上の公開リポジトリのリストを最大25個表示する。

Docker全般

 インストールされたDockerに関する情報表示コマンドを紹介します。

コマンド 概要
info Dockerのシステム及びホスト情報を表示する。
version Dockerクライアント及びサーバ、コンパイルに使用されたGoのバージョンを表示する。