dockerの使い方
- ユースケース 
- 最終的な提出物になることが多い
 
 
debian, ubuntuへのインストール
- デフォルトパッケージと
aptで入るdockerは良くないらしい - 公式のドキュメントに従って入れる
 - ユーザをdocker groupに追加する 
sudo usermod -aG docker $USER
 
dockerをインストールしていることでOSの調子が悪い時
- 動作させているカーネルのバージョンを下げる
 - 下げた状態で
docker-ceなどdocker関連のパッケージを削除することで復帰することができる - 公式のdockerが安定するまでしばらく様子を見る
 
コンテナとイメージの違い
- イメージ 
- コンテナの元。ここからコンテナというインスタンス(実態)を生成
 
 - コンテナ 
- イメージから生成された実態
 - commitすることでイメージすることができる
 
 
各コマンドと機能
localhostで起動しているサーバに接続したいとき
- コンテナ起動時のオプションに
--network="host"をつなげるとIPを分離しなくなる 
-t, --ttyオプションについて
 ttyをホストのttyに接続するかどうかのオプション 
 多くの場合、ttyに接続しても動作するが、GCEのスタートアップスクリプトなどはttyが存在しなく、-tオプションなしで動作を期待することがある
-i, --interactiveオプションについて
 -tと組み合わせて利用するケースが多い
 dockerコンテナと対話式にすすめるケースにこのオプションを設定する
-v, --volumeオプションについて
 docker -it -v volume:/volumeとdocker -it -v $PWD/volume:/volumeでは意味が異なる
 POSIXパスで記入すると、ローカルのファイルシステムにマップするものになる
 そうでないと、docker volumeというdocker固有のファイルシステムにマップされる
-m, --mountオプションについて
 --volumeオプションとほぼ同一であるが、歴史的経緯により、残っている
 引数がカンマ区切り
- 具体例 
--mount type=bind,source=$(pwd)/app,target=/app$(pwd)/appとdockerの/appをバインドする
--mount type=volume,source=app-data,target=/appapp-dataボリュームと/appにマウントする
 
volumeの確認
$ docker volume ls
-e, --envオプションについて
 環境変数をコンテナに設定するもの
 dockerfileに記述すると都合が悪いものは、実行時に渡すなどする
$ docker run --env FOO=$FOO -it <container-name>
FOOという環境変数を渡す例
dockerfileに記述済みの環境変数をunsetするには以下のように、具体的な値無しで指定して実行する
$ docker run --env FOO= -it <container-name>
--env-fileオプションについて
 ファイルから環境変数を読み込むもの
$ docker run --env-file <file-name> -it <container-name>
--network=hostオプションについて
 hostにredisサーバなどが建っている時に、コンテナからlocalhostでアクセスしたいときに、このオプションにする
$ docker run -it --network=host <container-name>
不要なイメージ、コンテナ、ボリュームの削除
$ docker system prune -a
コンテナを起動する
既存にイメージがある場合
$ docker start <container-image>
イメージが無ければ作る or ダウンロードして起動
$ docker run <container-image>
イメージをpull/ダウンロードする
$ docker pull <container-name>
コンテナを強制終了する
$ docker kill <container-name or id>
- dockerのコードは
Ctrl + cでキャンセルできないことがあるので、docker psでプロセスを特定して終了する必要がある 
コンテナの標準入出力に接続する
$ docker attach <container-name or id>
コンテナをpush/アップロードする
$ docker push <container-name or id>
コンテナを一時停止
$ docker pause <container-name or id>
ネットワークの一覧を表示
$ docker network list