前回は、よく使われるdockerコマンドやオプションについて紹介してきました。
今回は、Dockerfileの作成、ビルド(構築)、Docker image⇨コンテナを作るまで学んでいこう!
Contents
Dockerfileとは?
✅ Docker imageの構成を表現しているファイル(設計図のようなもの)
✅ “Dockerfile”というファイル名前 ⇦ テキストファイル
✅ ” INSTRUCTION arguments “の形で記載していく
Dockerfileを作成していく
Dockerfileはただのテキストファイルなので、そのまま開いて記述していくこともできますが、今回はVisual Studio Code(VScode)という無料のIDEツールを使って作成していきます。
Visual Studio Codeのインストール
公式HPにアクセスし、ダウンロード&インストールをしていきます。
VScode でDockerfile を作成&起動
$ code Dockerfile : Dockerfileを作る (IDE : VScodeで)
1 2 3 4 |
[~] $ cd ~/Desktop [~/Desktop] $ mkdir docker && cd docker # Dockerfileを作成してVScodeで起動 [~/Desktop/docker] $ code Dockerfile |
👇こんな感じで立ち上がればOKです。
Dokcerfileの書き方基本
✅ベースとなるimageをPC上の中から選定(ない場合はDockerHub等からpullしてくる)
※慣れない内はubuntuを入れて、そこに少しずつlayer(変更)を加えてみよう。
慣れたら比較的容量が小さく、必要最低限揃っているalpine(5MB)を試してみる。
✅FROMから書き始める(ex. FROM ubuntu:latest→ubuntuOSをベースにする)
✅RUNで実行したい操作を記述していく(ex. RUN touch test ※testファイルを作る)
⚠️Docker imageのlayer数は最小限になるように記述する
(layerが発生するコマンドはRUN,COPY,ADDの3つ)
✅Dockerfileを作成している時はcacheを上手く使っていく。
✅”CMD”にデフォルトコマンドを設定する(特に指定がなければ”bin/bash”にする)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<Dockerfile> // cache不使用時 FROM ubuntu:latest # ベースとなるimageファイルを記述 RUN apt-get update && apt-get install -y \ curl \ nginx RUN apt-get install -y cvs CMD ["/bin/bash"] //cache使用時 ※Dockerfileを最後にまとめて書く FROM ubuntu:latest RUN apt-get update && apt-get install -y \ curl \ cvs \ nginx CMD ["/bin/bash"] |
Docker buildコマンドでDockerfile ⇨ Docker imageを作成
$ docker build (-f <Dockerfile.name> -t <imageName>) <build context>
: <Dockerfile.name>から<imageName>という名前のDocker imageを<build context>に作成
フォルダ内にDockerfileが一つで、ビルドコンテキストがカレントディレクトリの場合
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# 作成したdockerフォルダに移動 [~] $ cd ~/Desktop/docker # 現在のディレクトリにDocker image を作成 ※dangling fileになる [~/Desktop/docker] $ docker build . # imageがbuildされているのを確認(指定がない場合はレポジトリ名はnoneとなる) [~/Desktop/docker] $ docker images >REPOSITORY TAG IMAGE ID CREATED SIZE <none> <none> 2e4f06f1347a 20 seconds ago 72.9MB new-ubuntuという名前のDocker imageを作成 [~/Desktop/docker] $ docker build -t new-ubuntu . # new-ubuntuがbuildされていることを再度確認 $ docker images >REPOSITORY TAG IMAGE ID CREATED SIZE new-ubuntu latest 2e4f06f1347a 3 minutes ago 72.9MB |
フォルダ内にDockerfileが複数ある、ビルドコンテキストがカレントディレクトリではない時
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[~/Desktop] $ cd docker [~/Desktop/docker] $ ls > Dockerfile sample_folder [~/Desktop/docker] $ cd sample_folder [~/Desktop/docker/sample_folder] $ mv ../Dockerfile ../Dockerfile.dev [~/Desktop/docker/sample_folder] $ ls .. >Dockerfile Dockerfile.dev sample_folder ======buildcontextをsample_folderとして、1つ階層が上のDockerfile.devをビルドする======= [~/Desktop/docker/sample_folder] $ docker build -f ../Dockerfile.dev . |
いかがだったでしょうか?
次回は、Dockerfileに記述する’COPY’と’ADD’の違いについて触れていこうと思います。
今回はこの辺で、バイバイ👋
○プログラミング初心者
○Dockerの基礎の基礎部分を勉強したい人