##コンテナに名前をつけて作る(コンテナからcommit)
参考画像
通常コンテナを作る時は
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からの作成方法
##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
で記述した内容から生成されたもの。