LoginSignup
0
0

More than 3 years have passed since last update.

dockerimageの作成方法について 〜コンテナからcommit・dockerfileからbuild〜

Last updated at Posted at 2020-12-08

全体像

スクリーンショット 2020-12-08 22.41.09.png
上記図について以下で詳細を説明していく


コンテナに名前をつけて作る(コンテナからcommit)

参考画像
スクリーンショット 2020-12-04 15.20.08.png

通常コンテナを作る時は

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)
スクリーンショット 2020-12-04 16.32.59.png

対象imageを選択
スクリーンショット 2020-12-04 16.29.23.png
スクリーンショット 2020-12-04 16.35.52.png

ページのにSupported tags~ Dockerfile linksがある

そこの見たいバージョンを選択(今回は18.04にする)
スクリーンショット 2020-12-04 16.29.47.png
そうするとdockerfileの記載のあるGithubへ移動出来る。
ここに記載されている今回であればFROM scratchからの記載内容がdockerfile
ここにその対象imageについての記述をしていくことでdockerfileを作っていく

dockerfileの作り方

dockerfileを作る時はファイル名は命名規則により「Dockerfile」とする
INSTRUCTION argumentsの形で書いていく
(例:「FROM ubuntu:latest」や「RUN touch test」)
基本最初はFROMから書いていくルール

fileの具体的な作り方(今回はデスクトップに作ることを想定)

スクリーンショット 2020-12-04 16.46.22.png

ターミナルを開き

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完了。

スクリーンショット 2020-12-08 21.49.58.png

docker build後にdocker imagesコマンドをすると
スクリーンショット 2020-12-08 21.59.06.png
一番上に<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の内容が反映されているか確認

スクリーンショット 2020-12-08 22.26.17.png

docker run -it new-ubuntu bash
ls

上記コマンドでコンテナに入り確認するとtestというファイルが作成されていることが確認できる。
この「test」がdockerfileにてRUN touch testで記述した内容から生成されたもの。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0