Dockerコマンド一覧

## Dockerイメージの操作

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

```
docker pull [オプション] イメージ名[:タグ名]

// （例）CentOSのDockerイメージ取得
docker pull centos:7
// （例）CentOSのすべてのタグのDockerイメージ取得
docker pull -a centos
// （例）取得先URLを指定してCentOSのDockerイメージ取得
docker pull registry.hub.docker.com/centos:7
```

**イメージの一覧表示**

```
docker images [オプション名] [リポジトリ名]

// （例）ローカル環境のDockerイメージの一覧表示
docker images
// （例）ローカル環境のDockerイメージのダイジェスト表示
docker images --digests asashiho/dockersample
```

**イメージの詳細確認**

```
docker inspect [オプション] コンテナ識別子またはイメージ識別子 [コンテナ識別子またはイメージ識別子]

// （例）Dockerイメージの詳細表示
docker inspect centos
// （例）OS情報の取得
docker inspect --format="{{.Os}}" centos
```

**イメージのタグ設定**

```
docker tag イメージ名:[タグ名] ユーザー名/イメージ名:[タグ名]

// （例）Dockerイメージへのタグ設定
docker tag httpd:2.4 asashiho/webserver:1.0
```

**イメージの検索**

```
docker search [オプション] 検索キーワード

// （例）Docker Hubに公開されているDockerイメージの検索
docker search centos
// （例）人気のあるDockerイメージの検索
docker search --stars=30 centos
```

**イメージの削除**

```
docker rmi [オプション] イメージ名 [イメージ名]

// （例）Dockerイメージの削除
docker rmi nginx
```

**Docker Hubへのログイン**

```
docker login [オプション] [サーバ名]

// （例）Docker Hubへのログイン
docker login
```

**イメージのアップロード**

```
docker push イメージ名[:タグ名]

// （例）Docker HubにDockerイメージをアップロード
docker push asashiho/webserver:1.0
```

**Docker Hubからのログアウト**

```
docker logout [サーバ名]

// （例)Docker Hubからログアウト
docker logout
```

## Dockerコンテナの生成/起動/停止

**コンテナの生成/起動**

```
docker run [オプション] イメージ名[:タグ名] [引数]

// （例）カレンダー表示
docker run -it --name "test" centos /bin/cal
// （例）bashの実行
docker run -it --name "test" centos /bin/bash
```

**コンテナのバックグラウンド実行**

```
docker run [オプション] イメージ名[:タグ名] [引数]

// （例）コンテナのバックグラウンド起動
docker run -d centos /bin/ping localhost
// （例）コンテナのログ確認
docker logs -t 4bd7e5f77
// （例）コンテナの常時再起動
docker run -it --restart=always centos /bin/bash
```

**コンテナのネットワーク設定**

```
docker run [オプション] イメージ名[:タグ名] [引数]

// （例）コンテナのポートマッピング
docker run -d -p 8080:80 httpd
// （例）コンテナのDNSサーバ指定
docker run --dns=192.168.1.1 httpd
// （例）MACアドレスの指定
docker run -it --mac-address="92:d0:c6:0a:29:33" centos
// （例）ホスト名とIPアドレス定義
docker run -it --add-host=test.com:192.168.1.1 centos
// （例）ホスト名の設定
docker run -it --hostname=www.test.com --add-host=node1.test.com:192.168.1.1 centos
// （例）コンテナのリンク設定
docker run -it --name appserver --link dbserver:pg centos /bin/bash
```

**リソースを指定してコンテナを生成/実行**

```
docker run [リソースオプション] イメージ名[:タグ名] [引数]

// （例）CPU時間の相対割合とメモリの使用量を指定
docker run --cpu-shares=512 --memory=512m centos
// （例）ディレクトリの共有
docker run -v /c/Users/asa/WebPage:/var/www/html httpd
```

**コンテナを生成/起動する環境を指定**

```
docker run [環境設定オプション] イメージ名[:タグ名] [引数]

// （例）環境変数の設定
docker run -it -e foo=bar centos /bin/bash
// （例）環境変数の一括設定
docker run -it --env-file=env_list centos /bin/bash
// （例）作業ディレクトリの設定
docker run -it -w=/tmp/work centos /bin/bash
```

**稼働コンテナの一覧表示**

```
docker ps [オプション]

// （例）すべてのコンテナを表示する
docker ps -a
// （例）フィルタリング
docker ps -a -f 'name=test1'
// （例）出力形式の指定
docker ps -a --format "{{.ID}}: {{.Status}}"
// （例）出力形式を表形式にする
docker ps -a --format "table {{.ID}}\t{{.Status}}"
```

**コンテナの稼働確認**

```
docker stats [コンテナ識別子]

// （例）Apache、Nginxの稼働確認
docker stats apache nginx
```

**コンテナの起動**

```
docker start [オプション] コンテナ識別子 [コンテナ識別子]

// （例）コンテナの起動
docker start dbb4bbe0f470
```

**コンテナの停止**

```
docker stop [オプション] コンテナ識別子 [コンテナ識別子]

// （例）コンテナを2秒後に停止
docker stop -t 2 dbb4bbe0f470
```

**コンテナの再起動**

```
docker restart [オプション] コンテナ識別子 [コンテナ識別子]

// （例）コンテナを2秒後に再起動
docker restart -t 2 dbb4bbe0f470
```

**コンテナの削除**

```
docker rm [オプション] コンテナ識別子 [コンテナ識別子]

// （例）コンテナを削除
docker rm dbb4bbe0f470
// （例）コンテナを一括削除
docker rm -f 'docker ps -a -q'
```

**コンテナの中断/再開**

```
docker pause コンテナ識別子 [コンテナ識別子]

// （例）コンテナの中断
docker pause nginx1
// （例）コンテナの再開
docker unpause nginx1
```

## 稼働しているDockerコンテナの操作

**稼働コンテナへの接続**

```
docker attach コンテナ識別子

// （例）コンテナへの接続
docker attach test
// プロセス終了
[Ctrl] + [p]
// コンテナ終了
[Ctrl] + [C]
```

**稼働コンテナでプロセス実行**

```
docker exec [オプション] コンテナ識別子 実行するコマンド [引数]

// （例）bashを実行
docker exec -it nginx1 /bin/bash
// （例）pingを実行
docker exec -it nginx1 /bin/ping localhost
```

**稼働コンテナのプロセス確認**

```
docker top コンテナ識別子

// （例）プロセス確認
docker top nginx1
```

**稼働コンテナのポート転送確認**

```
docker port コンテナ識別子

// （例）ポート転送確認
docker port nginx1
```

**コンテナの名前変更**

```
docker rename コンテナ識別子 コンテナ識別子

// （例）コンテナ名の変更
docker rename old new
```

**コンテナ内のファイルをコピー**

```
docker cp コンテナ識別子:コンテナ内のファイルパス ホストのディレクトリパス
docker cp ホストのファイル コンテナ識別子:コンテナ内のファイルパス

// （例）コンテナからホストへのファイルコピー
docker cp test:/etc/passwd /tmp/etc
// （例）ホストからコンテナへのファイルコピー
docker cp ./local.txt test:/tmp/test.txt
```

**コンテナ操作の差分確認**

```
docker diff コンテナ識別子

// （例）コンテナとイメージの差分確認
docker diff test
```

## Dockerの情報確認

**Dockerのバージョン確認**

```
docker version

// （例）バージョン確認
docker version
```

**Dockerの実行環境確認**

```
docker info

// （例）実行環境確認
docker info
```

## コンテナからイメージの作成

**コンテナからイメージ作成**

```
docker commit [オプション] コンテナ識別子 [イメージ名[:タグ名]]

// （例）コンテナからイメージの作成
docker commit -a "ASA SHIHO" nginx1 asashiho/webfront:1.0
```

**コンテナをtarファイル出力**

```
docker export コンテナ識別子

// （例）tarファイル出力
docker export webap > latest.tar
```

**tarファイルからイメージ作成**

```
docker import ファイルまたはURL - [イメージ名[:タグ名]]

// （例）tarファイル取り込み
cat latest.tar | docker import - webap:1.0
```

**イメージの保存**

```
docker save [オプション] 保存ファイル名 [イメージ名]

// （例）イメージの保存
docker save -o export.tar mongo
```

**イメージの読み込み**

```
docker load [オプション]

// （例）イメージの読み込み
docker load -i export.tar
```

## Dockerfile

**DockerfileからDockerイメージの作成**

```
docker build -t [生成するイメージ名]:[タグ名] [Dockerfileの場所]

// （例）新しいイメージの作成
docker build -t sample:1.0 /home/docker/sample
// （例）ファイル名を指定
docker build -t sample -f Dockerfile.base .
// （例）標準入力から
docler build - < Dockerfile
```