dockerコマンドチートシート

#dockerコマンドチートシート
覚えれないので書いてみた。
詳しい下記があるがよく使うものを抜粋しました。
http://docs.docker.jp/engine/reference/index.html

##イメージの検索
Docker Hub 上のイメージを探します

```lang:
docker search ruby
```

##イメージのダウンロード

```lang:
docker pull ruby:2.3.1
```

##イメージの一覧

```lang:
docker images
```

##コンテナの一覧

```lang:
docker ps
```

上記は実行中のものだけ。実行中ではない物すべて表示する場合は下記になります。

```lang:
docker ps -a
```

```lang:オプション
-a: 停止したコンテナも含めて表示する
```

##イメージの作成
Docker イメージは Dockerfile と「コンテクスト」（context）を使って構築します。構築時のコンテクストとは、特定の パス や URL の場所にあるファイルのことです。構築中のステップで、対象コンテクスト内のファイルを参照できます。

```lang:
docker build [オプション] パス | URL | -
```

```lang:具体例
docker build -t kite_999/hoge .
```

```lang:オプション

  --build-arg=[]                  構築時の変数を指定
  --cpu-shares                    CPU 共有 (相対ウエイト)
  --cgroup-parent=""              コンテナ用のオプション親 cgroup
  --cpu-period=0                  CPU CFS (Completely Fair Scheduler) 間隔の制限
  --cpu-quota=0                   CPU CFS (Completely Fair Scheduler) クォータの制限
  --cpuset-cpus=""                実行時に許可する CPU。例 `0-3`, `0,1`
  --cpuset-mems=""                実行時に許可するメモリ。例 `0-3`, `0,1`
  --disable-content-trust=true    イメージの認証をスキップ
  -f, --file=""                   Dockerfileの名前 (デフォルトは 'PATH/Dockerfile')
  --force-rm                      常に中間コンテナを削除
  --help                          使い方を表示
  --isolation=""                  コンテナの隔離（独立）技術
  --label=[]                      イメージ用のメタデータを指定
  -m, --memory=""                 構築コンテナのメモリ上限を指定
  --memory-swap=""                整数値の指定はメモリにスワップ値を追加。-1は無制限スワップを有効化
  --no-cache                      イメージ構築時にキャッシュを使わない
  --pull                          常に新しいイメージのダウンロードを試みる
  -q, --quiet                     構築時の表示を抑制し、成功時はイメージ ID を表示
  --rm=true                       構築に成功したら、全ての中間コンテナを削除
  --shm-size=[]                   `/dev/shm` のサイズ。書式は `<数値><単位>`。 `数値` は `0` 以上。単位は `b` (bytes)、`k` (kilobytes)、 `m` (megabytes)、 `g` (gigabytes) のどれか。単位を省略するとバイトになる。サイズを省略すると `64m` になる。
  -t, --tag=[]                    '名前:タグ' 形式で名前とオプションのタグを指定
  --ulimit=[]                     Ulimit オプション
```

##コンテナの起動
フォアグラウンド・モード、デタッチド・モードの大きく２つにわかれます。
デフォルトはフォアグラウンド・モードです。

```lang:
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
```

```lang:具体例
docker run --rm -v "$PWD":/usr/src/hoge -w /usr/src/hoge ruby:2.3.1 bundle init
```

上記具体例はruby:2.3.1イメージを使用しコンテナを作り、カレントディレクトリをコンテナの/usr/src/hogeにマッピングさせ
「bundle init」を実行し、終了したらコンテナを削除する。という意味になります。

```lang:オプション
-name: コンテナに任意で名前をつけることができます。
--rm: 実行後のコンテナを削除します。指定しない場合はゴミが残り続けます。
-v: ホストのディレクトリをコンテナ内のディレクトリにマウントします。"$PWD"はカレントディレクトリを意味します。
-w: ワーキングディレクトリを指定します。

デタッチド・モード
-d: デタッチド・モードで起動する（バックグラウンド）
コンテナが実行するルート・プロセスが終了したら、デタッチド・モードで起動したコンテナも終了します。
デタッチド・モードのコンテナは停止しても自動的に削除できません。
つまり -d オプションでは --rm を指定できません。デタッチド・コンテナに再度アタッチ（接続）するには、 docker attach コマンドを使います。

フォアグラウンド・モード
-i STDINを開きます。
-t ttyを割り当てます。
上記 -i -t　はセットで使うとターミナルでコンテナを実行することができます。
ターミナルをexitするとターミナルを終了し、コンテナも停止します。
終了したくない場合は「CTRL + p + q」で抜けます。
```

##コンテナにアタッチ
起動中のコンテナにアタッチするコマンド。
コンテナにアタッチすると、バックグラウンドで実行しているコンテナをフォアグラウンドにします。

```lang:
docker attach コンテナIDまたは名前
```

##コンテナの再開
停止したコンテナを再起動するコマンド。
コンテナは以前に指定したものと同じオプションで起動。-a でアタッチすることが可能。

```lang:
docker start [オプション] コンテナ [コンテナ...]
```

##コンテナの再起動

```lang:
docker restart [オプション] コンテナ [コンテナ...]
```

##コンテナの削除

```lang:
docker rm コンテナID or name
```

```lang:停止中のコンテナを一気に削除する
docker rm `docker ps -aq`
```

```lang:オプション
-f: 強制
```

##イメージの削除

```lang:
docker rmi イメージID
```

##イメージの保存、復帰

```lang:保存
docker save イメージのタグ又はID > ファイル名
```

```lang:復帰
docker load < ファイル名
```