本投稿の目的
・Dockerの操作についての議事録です。
学習に使った教材
Udemyの ["米国AI開発者がゼロから教えるDocker講座"](https://www.udemy.com/course/aidocker/) を教材として使用しました。○container作成 (2.image作成する場合)
○build contextの作成
mkdir <build context名>
・build context とは,docker image を作成する際のimage元となるフォルダ
○build contextへ移動
cd <build context名>
・カレントディレクトリが build context の状態にする
○Dockerfileの作成,編集
touch Dockerfile
・build context 内にDockerfileというテキストファイルを作成 (これは naming convention *命名規則)
・この中に書いたコマンド実行されてimageが作成される (編集方法は別途記事を書くので割愛)
○imageの作成
docker build .
・ "." はカレントディレクトリを意味する (カレントディレクトリうちのDockerfileを使てimage作成が実行される)
・名前とTAGを指定してないので "none" というimageが作成される
・dangling image とよばれる
【Dockerfileを明示的に指定する場合】
docker build -f docker -f <Dockerfileのpath/名前>
・-f はDockerfileを明示的に指定するためのオプション
・ の部分には適切なpathとファイル名を記述する
【名前とTAGを指定して作成する場合】
docker build -t <image名>:<TAG> .
・-t は名前を付けてimageを作成するためのオプション
・ の部分は,通常はlatestと書く
○containerの作成
docker run <image名>
・作成したいcontainerの素となるimage名を指定してrunを実行
・#1で説明したとおり,これではデフォルトコマンドを実行後にexitしてcontainerから抜けてしまう
【run後のデフォルトコマンドを上書きして実行】
docker run <image名> <上書きコマンド>
・デフォルトコマンドの代わりに上書きコマンドを実行
・これでは上書きコマンドを実行後にexitしてcontainerから抜けてしまう
・デフォルトコマンドはrun実行後に docker ps -a のCommandから確認可能
・上書きするとここに指定したCommandが表示される
【run後にcontainerに残るための記述】
docker run -it <image名> bash
・これでcontainer起動後にexitせずにcontainerの中にとどまる
・そのため,ターミナルの実行前の記述が以下のように変化する
root@xxxxxxxxxxx:/#
・これはContainer上のOSにbashを通してアクセスする状態になったことを意味する
・デフォルトではコンテナ起動後はrootユーザーになる
・Continaerからexitで抜ける処理は実行されていない
・container から抜けるときは以下を実行するとHostのターミナル状態に戻る
exit
○-itとは?
docker run -it <image名> bash
・run後にcontainerに残るための記述に使用することが多いコマンド
・-iと-tを重ねて-it
・それぞれには以下の意味がある
○-i
・インプット可能
・HOSTからコンテナへのSTDIN(入力ch)を繋ぐコマンド
・繋がないとHostにしか入力が伝わらないため,コンテナへ指示が届かない
【chとは】
・ "STDIN" "STDOUT" "STDERR" の3つがある
・STDIN : キーボードの入力をプログラムへ繋ぐためのch
・STDOUT,STDERR : プログラム結果をモニタへ出力するためのch
○-t
・ターミナル表示が綺麗になる (pretyにする)
・コマンド保管も使用可能になる