[Dockerコマンド編メモ]HTMLもWeb構築もわからない素人がPython+FlaskでWebサービスを作ってみる

これは、エンジニア未経験のど素人が、終末エンジニアとして
PythonとFlaskでWebアプリを作成するためのメモ記事です。

[ランディングページ](http://qiita.com/yuusei/items/0c202309743214fdce2f)
[Flask](http://qiita.com/yuusei/items/15f38a6abd431d093d2e)
[Docker] (http://qiita.com/yuusei/items/51b3917f1ce3f2fbb5e6)
	[Dockerコマンド]このページ
[Web開発](http://qiita.com/yuusei/items/cf738b0849fc932a64e6)


#Docker コマンド一覧

基本的には[Docker Documents日本語版](http://docs.docker.jp/engine/reference/commandline/)をメモ的に記載しているだけなのでご容赦を。

Dockerのコマンドは

> docker —help

で参照できるので、個別に見ていきます。アルファベット順に表示されるのでアルファベット順にします。

##主要なコマンド(Commands):
###attach:      Attach to a running container
起動中のコンテナに接続する。インタラクティブ管理が可能
書式： docker attach [OPTIONS] “CONTAINER ID”

###build:       Build an image from a Dockerfile
既存のDocker File(Dockerの設定を記述したファイル)を参照し、ファイルに則ってイメージを作成する。
書式： docker build [OPTIONS] “path”

###commit:      Create a new image from a container's changes
コンテナの最新の設定を別名をつけて保存する。
書式： docker commit [OPTIONS] ”CONTAINER ID” [“Ropository”[:”tag”]]

###cp:          Copy files/folders between a container and the local filesystem
コンテナ内の環境とローカルの環境でファイルをコピーする。
書式： docker cp [OPTIONS] ”CONTAINER ID”:”Path”  “Local path”|-

###create:      Create a new container
新しいコンテナを作成します。
書式：docker create [OPTIONS] “IMAGE” [command] [argument(引数)…]

###deploy:      Deploy a new stack or update an existing stack
新しいStackを既存のStackの上にDeploy(展開)する
書式：docker deploy [OPTIONS] STACK
※[StackとCueのについてはこのサイトでなんとなくわかるかと](http://e-words.jp/w/スタック.html)

###diff:        Inspect changes to files or directories on a container's filesystem
コンテナのファイルシステム上で、変更があったドキュメントを表示する
書式：docker diff CONTAINER
※追加：A(=add), 変更:C(=change), 削除：D(=delete)と言った形で、変更の種類まで表示される。

###events:      Get real time events from the server
サーバーからリアルタイムでのイベントを取得
書式：docker events [OPTIONS]
※Dockerコンテナ/Dockerイメージ/Dockerデーモンなど、それぞれが各々の異なる物を出す

###exec:        Run a command in a running container
起動中のコンテナの中で新たなコマンドを動作させる
書式：docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
※起動中のみ有効。停止するとexecの命令も停止する。

###export:      Export a container's filesystem as a tar archive
コンテナ内にあるファイルシステムの情報を tar ファイル形式で保存する
書式：docker export [OPTIONS] CONTAINER

###history:     Show the history of an image
Dockerイメージをどのように構築したか履歴を表示する
書式：docker history [OPTIONS] IMAGE

###images:      List images
Dockerイメージの一覧表示。CommandのところにRepository名で絞り込むワードが入れられる
書式：docker image COMMAND

###import:      Import the contents from a tarball to create a filesystem image
空のイメージを作成し、 tarボール(.tar, .tar.gz, .tgz, .bzip, .tar.xz, .txz)形式のファイルを読み込む。
書式：docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]

###info:        Display system-wide information
(カーネルのバージョン、コンテナとイメージの数を含む)Docker管理上必要な広範な情報を表示する
書式：docker info [OPTIONS]

###inspect:     Return low-level information on Docker objects
コンテナ|イメージ|タスクのそれぞれに置いて低レベルな情報をJSON 配列で表示する
書式：docker inspect [OPTIONS] NAME|ID [NAME|ID...]

###kill:        Kill one or more running containers
起動中のコンテナで動作しているプロセスを終了(=Sigkill)する(複数可能)
書式：docker kill [OPTIONS] CONTAINER [CONTAINER...]

###load:        Load an image from a tar archive or STDIN
tar アーカイブかSTDIN(standard input)からイメージを取り込む
書式：docker load [OPTIONS]

###login:       Log in to a Docker registry
Dockerのレジストリ/サーバーに登録/ログインする
書式：docker login [OPTIONS] [SERVER]
※ 例：docker login localhost:8080

###logout:      Log out from a Docker registry
Dockerのレジストリから離脱する
書式：docker logout [SERVER]
※ 例：docker logout localhost:8080

###logs:        Fetch the logs of a container
(コンテナが json-file と journald ロギング・ドライバを使う)コンテナからログを取得
書式：docker logs [OPTIONS] CONTAINER

###pause:       Pause all processes within one or more containers
コンテナ内の全てのプロセスを一時停止
書式：docker pause CONTAINER [CONTAINER...]

###port:        List port mappings or a specific mapping for the container
コンテナに対する特別な/一般的なポートのマッピングを表示する
書式：docker port CONTAINER [PRIVATE_PORT[/PROTO]]

###ps:          List containers
起動中のコンテナのリストを表示する
書式：docker ps [OPTIONS]
※起動していないコンテナも表示するときは、オプションで -a を記載する事

###pull:        Pull an image or a repository from a registry
レジストリからイメージやリポジトリを引っ張ってくる(取得する)
書式：docker pull [OPTIONS] NAME[:TAG|@DIGEST]

###push:        Push an image or a repository to a registry
Dockerのイメージやリポジトリをレジストリにプッシュ(送信)する
書式：docker push [OPTIONS] NAME[:TAG]

###rename:      Rename a container
コンテナの名前を変更する
書式：docker rename CONTAINER NEW_NAME

###restart:     Restart one or more containers
コンテナを再起動する(複数可)
書式：docker restart [OPTIONS] CONTAINER [CONTAINER...]

###rm:          Remove one or more containers
コンテナを削除(複数可)
書式：docker rm [OPTIONS] CONTAINER [CONTAINER...]
※ 使い始めの自分は docker ps -a で削除したいコンテナIDを見つけてからrmする為よく使ってます

###rmi:         Remove one or more images
イメージを削除(複数可)
書式：docker rmi [OPTIONS] IMAGE [IMAGE...]

###run:         Run a command in a new container
新しいコンテナを実行する
書式：docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
※コンテナの作成コマンドであるため、オプションとして環境設定的なものが大量にある

###save:        Save one or more images to a tar archive (streamed to STDOUT by default)
イメージをtarアーカイブに保存する(複数可)
書式：docker save [OPTIONS] IMAGE [IMAGE...]

###search:      Search the Docker Hub for images
DockerHub内のイメージを検索
書式：docker search [OPTIONS] TERM

###start:       Start one or more stopped containers
コンテナを起動する(複数可)
書式：docker start [OPTIONS] CONTAINER [CONTAINER...]
※runはコンテナの新規作成。startは既存のコンテナの起動と考えるべき？

###stats:       Display a live stream of container(s) resource usage statistics
コンテナのリソース使用状況をリアルタイムで流し続ける(複数可)
書式：docker stats [OPTIONS] [CONTAINER...]

###stop:        Stop one or more running containers
コンテナに停止命令を出し、一定期間後にkillを実行する
書式：docker stop [OPTIONS] CONTAINER [CONTAINER...]
※killと比べて即時性はない

###tag:         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
イメージにタグ付けを行う
書式：docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
※タグ名に使えるのは（アルファベット）小文字と大文字、数字、アンダースコア、ピリオド、スラッシュ

###top:         Display the running processes of a container
コンテナで実行中のプロセスを表示
書式：docker top CONTAINER [ps OPTIONS]

###unpause:     Unpause all processes within one or more containers
コンテナ内の全ての一時停止中のプロセスに対し、一時停止の解除を行う
書式：docker unpause CONTAINER [CONTAINER...]
※stopはコンテナ自体を停止するため、これと関連は薄い。直接関連するものはcgroup freezerらしい

###update:      Update configuration of one or more containers
コンテナの設定を更新(複数可)
書式：docker update [OPTIONS] CONTAINER [CONTAINER...]

###version:     Show the Docker version information
Dockerのバージョン情報を表示
書式：docker version [OPTIONS]

###wait:        Block until one or more containers stop, then print their exit codes
コンテナが停止するまでブロックを行い、停止後は終了コードをターミナルに表示する
書式：docker wait CONTAINER [CONTAINER...]

##管理のためのコマンド(Management Commands)
コマンドの中身を見てると container とか checkpoint とか image とかなので、
コマンドというよりは呼び出しのような気がする・・・

###checkpoint:  Manage checkpoints
[checkpointとは、システムの変更をディスクに書き出す処理を行ったタイミング=pointらしい](http://e-words.jp/w/チェックポイント.html)
書式：docker checkpoint COMMAND
追加コマンド：  create / ls / rm

###container:   Manage containers
コンテナをいじるためのコマンド
書式：docker container COMMAND
追加コマンド：多すぎるので省略

###image:       Manage images
イメージをいじるためのコマンド
書式：docker image COMMAND
追加コマンド：多すぎるので省略

###network:     Manage networks
[Dockerのネットワークについてはこれを後読む](https://www.slideshare.net/nbykmatsui/docker-53483581?smtNoRedir=1)
書式：docker network COMMAND

###node:        Manage Swarm nodes
Node(サーバー君とかルーター君)をいじるためのコマンド
書式：docker node COMMAND
追加コマンド：connect / create / disconnect / inspect / ls /prune /rm

###plugin:      Manage plugins
本体にアタッチする追加の小規模プログラム(plugin)をいじるためのコマンド
書式：docker plugin COMMAND
追加コマンド：若干多いので省略

###secret:      Manage Docker secrets
[パスワードや機密情報管理系のコマンド操作](https://blog.1q77.com/2017/02/docker-1-13-secrets/)
書式：docker secret COMMAND
追加コマンド： create / inspect / ls / rm

###service:     Manage services
サービスをいじるためのコマンド
書式：docker service COMMAND
追加コマンド：若干多いので省略

###stack:       Manage Docker stacks
スタック(最新のものが先に出力されるデータ構造)の操作
書式：docker stack COMMAND
追加コマンド：スキップ

###swarm:       Manage Swarm
[ネットワークで複数のサーバーを接続し、その各サーバーでそれぞれアプリケーションを実行できる環境を「クラスタ環境」](http://knowledge.sakura.ad.jp/knowledge/5833/)をマネージするパッケージ？
書式：docker swarm COMMAND
追加コマンド：スキップ

###system:      Manage Docker
システムのマネージメント
書式：docker system COMMAND
追加コマンド：df / events / info / prune

###volume:      Manage volumes
ボリュームの操作
書式：docker volume COMMAND
追加コマンド：create / inspect / ls / prune / rm

##オプション(Options)
オプションコマンド。色々できるらしい。
ここは網羅メモだけ。

###      --config string      Location of client config files 
クライアント側の設定ファイルのロケーションを表示する
(デフォルト "/Users/user_name/.docker")

###       -D, --debug              Enable debug mode
デバッグモードに移行

###           --help               Print usage
ヘルプの表示

###       -H, --host list          Daemon socket(s) to connect to (default [])
 [Daemon君](https://ja.wikipedia.org/wiki/デーモン_(ソフトウェア))絡みの操作、
正直デーモン君ってなんなの？？状態

###      -l, --log-level string   Set the logging level
ログ管理系のコマンド
("debug", "info", "warn", "error", "fatal") (default "info")

###           --tls                Use TLS; implied by --tlsverify
[Transport Layer Security](http://e-words.jp/w/TLS.html)絡みの操作
データ暗号化と送受信に関わる話

###           --tlscacert string   Trust certs signed only by this CA
[CA](https://en.wikipedia.org/wiki/Certificate_authority)関係の操作を行う
(default "/Users/user_name/.docker/ca.pem")

###           --tlscert string     Path to TLS certificate file 
認証ファイルのパスをつなぐ
(default "/Users/user_name/.docker/cert.pem")

###           --tlskey string      Path to TLS key file
認証キーへのパスをつなぐ
(default "/Users/user_name/.docker/key.pem")

###           --tlsverify          Use TLS and verify the remote
認証する

###       -v, --version            Print version information and quit
バージョン表示

### 現在の環境“version 17.03.1-ce”での”--help”は以上