#dockerで学んだこと
docker run <image>// ドッカーでコンテナを起動(指定したコンテナが作られていなければ作って起動する
docker create <image> // コンテナを作る(起動はされない)
docker start <image> //作ったコンテナを起動する
docker ps // ドッカーで起動中のコンテナを確認できる。
docker ps -a // 起動していないコンテナも含めて確認できる。
docker images // ホストにあるimagesを確認できる
docker images -f dangling=true //dangling imageのみを確認できる。
docker build <directory> //dockerfileのあるディレクトリ内で使用。対象ディレクトリ内のdockerfileからdockerimageを作成する。
docker build -t <name> <directory>
docker run -it <image> bash // コンテナに入るためのおまじない
exit // ドッカーから退出
docker restart // exited状態のコンテナを起動する
docker exec -it<container> bash //コンテナに入る
docker commit<container> <image> // コンテナから新たに作ったコンテナにimage名をつける
docker tag<source(古いimage名)><target(新しいimage名)>
docker push<image> // 他の人も使えるようになる
docker rmi<image> //不要なimageを削除出来る
docker rm コンテナ名 //不要なコンテナを削除(アクティブなものは消せない)
docker stop コンテナ名 //コンテナを止める
docker system prune // コンテナ全削除(アクティブな物は消せない)
dockerを止める際
STATUSがUPになっているものが複数あった場合は
docker stop 84aafb23ffd4 f4a4902cbfd0 84aafb23ffd4
上記のようにスペース区切りでIDを指定すると指定したIDのコンテナが止まる(Exitedになる)
このスペース区切りで指定して複数に実行する方法は削除の時も同様に使用可能
docker rm 84aafb23ffd4 f4a4902cbfd0 84aafb23ffd4
通常コンテナを作る時は
docker run コンテナ名(ここには既にあるコンテナから引っ張ってきたいコンテナの名前を入れる)
この方法だと作成されたコンテナの名前はランダムになる
docker run --name sample ubuntu
//上記のsampleが自分でつけるコンテナの名前 ubuntuは既に誰かかが作成済みの持ってきたいコンテナの名前
上記のように--nameとコンテナ名を指定することでコンテナ名をつけられる。
※同じ名前のコンテナを作ることは出来ないので注意する※
##docker run のオプション
detached mode
docker run -d <image>
コンテナ起動後にdetachする(バックグラウンドで動かす「STATUSがUpになった状態でrun出来る」)
(short-term)foreground mode
docker run --rm <image>
コンテナをExit後に削除する(一回きりのコンテナ)
docker run hello-world
のようにコンテナを一回起動して内容を確認→もう使わない
といった時に便利
##dockerfileについて
docker hubでみたいdockerfileのあるdocker imageを検索(今回はubuntu)
ページのにSupported tags~ Dockerfile linksがある
そこの見たいバージョンを選択(今回は18.04にする)
そうするとdockerfileの記載のあるGithubへ移動出来る。
ここに記載されている今回であればFROM scratchからの記載内容がdockerfile
ここにその対象imageについての記述をしていくことでdockerfileを作っていく
##dockerfileの作り方
上記図について以下で詳細を説明していく
dockerfileを作る時はファイル名は命名規則により**「Dockerfile」**とする
INSTRUCTION argumentsの形で書いていく
(例:「FROM ubuntu:latest」や「RUN touch test」)
基本最初はFROMから書いていくルール
###fileの具体的な作り方(今回はデスクトップに作ることを想定)
ターミナルを開き
PC ~ % cd desktop// デスクトップへ移動
PC desktop % mkdir docker// ドッカーフォルダ作成
PC desktop % cd docker // ドッカーフォルダへ移動
PC docker % code Dockerfile // Dockerfileというファイルを作成しvscodeを起動
//(codeはvscodeを開くターミナルのコマンド)この時点ではDockerのファイルは開いているだけで保存されていないので注意。vscodeのエディタ上でセーブしましょう(⌘+s)
以下の様にdockerfileを記述していく
#ubuntuは元となるdocker image(:latestと書くことは必須ではない)
FROM ubuntu:latest
#ubuntu imageに対しtestファイルを作成している
RUN touch test
##dockerfileをbuildする(buildによってdockerfileからdocerimageが作成される)
dockerfileのあるディレクトリへ移動する(仮にdockerfileがあるディレクトリを「Docker」とする)
cd Docker
を使用し対象ディレクトリへ移動。
対象のdockerfileのあるディレクトリへ移動したら
docker build .
//ここで使用している「.」はカレントディレクトリを指している(この部分に書くのはbuildをするディレクトリ)。
//現在いるディレクトリのdockerfileをbuildするという指定をする役割をしている
//基本はカレントディレクトリにbuildするので「.」で覚えればOK
これでbuild完了。
docker build後にdocker images
コマンドをすると
一番上に<none>
と書かれたdockerimageが作成されたことが確認できる。
docker build .
をした際に名前をつけないと名前が<none>
となる。
この名前のないimageをdangling image
と呼ぶ。
docker images -f dangling=true
とすることでdocker imagesの中からdangling imageのみを検索できる
名前をつける際は
docker build -t new-ubuntu:latest .
//new-ubuntu部分が名前になる。tag名:latestは指定しなくてもbuile可能。「.」は上述と同様可憐とディレクトリを指定。
###docker buildによってdockerfileの内容が反映されているか確認
docker run -it new-ubuntu bash
ls
上記コマンドでコンテナに入り確認するとtestというファイルが作成されていることが確認できる。
この「test」がdockerfileにてRUN touch test
で記述した内容から生成されたもの。
続く