##目的
自分用のdockerコマンドメモ
##docker基本コマンド
$ docker images //docker image 一覧
$ docker run <image名> // コンテナを作る この時点ではコンテナはupではない ($ docker create <image名> + $ docker start -a <image名> コマンド
$ docker run -d <image名> //デタッチドモード (そのバックグラウンドで動かす)
$ docker run --rm <image名> //一回限りのコンテナ
$ docker run --name <name> <image名>
$ docker run -it <image名> bash //コンテナを起動してbashプログラムで上書き itはインプット可能にして画面見た目をprettyにする
$ docker run -it -v "ホストのfile元のパス:コンテナのパス" <image名> bash // ホストのファイルシステムをコンテナにマウントする(実際にはないはアクセスできる状態)例 docker run -it -v ~/Desktop/docker_test/mounted_folder:/new_dir f3a01f5a7b45 bash
$ docker run -it -p <hostのport番号>:<コンテナのport番号> --rm jupyter/datascience-notebook bash ホストとコンテナのポートをつなげる
$ docker run -it --rm --cpus <コア数> --memory <メモリ> ubuntu bash // 例 docker run -it --rm --cpus 4 --memory 2g ubuntu bash
$ docker restart<コンテナ名> //コンテナをexitからupさせる
$ docker exec -it <コンテナ名> bash //upしたコンテナに対してプログラム実行
:/# exit // プロセスを切ってコンテナをexitさせる
:/# デタッチ(ctrl + p + q) //コンテナのプロセスを残したままコンテナはupのまま
$ docker attach <コンテナ名>//デタッチ状態のコンテナのプロセスに再び入る
$ docker build <directoryのパス> //ディレクトリの中からdockerfileを探してbuildする 例 docker build .
$ docker build -t <name> <directoryのパス> //名前をつけてbuild
$ docker build <dockerfileのあるパスのdockerfile名> <dockerコンテクスト> // カレントディレクトの外からbuildしたい場合
##消去関連
$ docker rmi <レポジトリ名> //image削除
$ docker rm <コンテナ名> //exit状態のコンテナ削除
$ docker stop <コンテナ名> //コンテナをup→exitへ
$ docker system prune // exit状態のコンテナを全削除
##docker hub関連
$ docker login // docker hubにログイン
$ docker docker pull <image名> // 例ubuntu
$ docker commit <image名> <repository名(新image名): tag名> //imageを更新 (pushするにはイメージ名をレポジトリ名にする必要がある)
//dockerhubのレポジトリ名は username/<レポジトリ名> の構成であり
//pushするときは username/<レポジトリ名> = <image名 : tag名> の関係にしておく
docker tag <sourceのimage名><targetのimage名> //イメージ名を変える
##応用?1
$ id -u //ユーザIDを確認
$ id -g //グループIDを確認
$ docker run -it -u $(id -u):$(id -g) -v ~/Desktop/docker_test/mounted_folder:/reated_in_run <image id> bash //ユーザidを指定してrun
$ docker inspect <コンテナID> //cpuとかメモリの割当確認
注意 dockerfileでmkdirしたディレクトリはroot権限