【Dockerについて 復習】


こんにちは!
Docker!

目次

1.iamgeとコンテナの違い

2.DockerHubでimageの見方

3.Docker-composeとは

4.docker-compose.ymlの書き方

5.phpmyadminの必要性

1.imageとコンテナの違い

imageとは
・コンテナを作るためのタネみたいなもの

コンテナとは
・imageを元に生成される仮想環境の実行部分
・アプリケーションを管理するプログラムが組み込まれてる

2.DockerHubでimageでの見方

下記の画像が、DockerHubで実際に検索した際に出てくるDockerfileです。
①〜③で書いてるように、複数Dokcerfileがありますよね??
それについて解説していきます!

画像下線の1.18.0/Stable/1.18 と3種類について

・これらは検索したimageのversionを示しています。

1.18.0のDockerFileを選んでも良いし、stableのDockerFileを選んでも良いということです!
(3番目もね!)

1.18.0のそれぞれの意味

1.18.0
・Major Versionと言われて、これが変わるとガラッと機能が変わる
1.18.0
・Minor Versionと言われて、後方互換があり、便利な機能や記法が変わったりする
1.18.0
・Revision Versionと言われて、数値が上がるにつれて、バグの対応をしてくれる

stableの意味

安定版だから、変化することがない。

1.18の意味

・Major VersionとMinor Versionについては①と同じ
・Revision Versionが記載されていないので、改善されたバグは更新されない

例えば

・1.18.0
1.18.0を選ぶと、version1.18.0のイメージしか使えないよね??
もし仮にバグが見つかったとしても、変更できなくて、DockerHubから違うversion(最新版とか)を新しく
取得しなくてはいけない。
・1.18
1.18を選ぶと、Revision Version部のみ記述がないので
DockerHub側が1.18のバグを見つけて更新/改善してくれた時に、
自動的にバグ改善したversionを認識して取得してくれる(表現あってるか不明)

例えば
2021/01/01
DockerHub上のnginxイメージが
1.18.0 stable 1.18
とあるとする。

2日後にnginxイメージ1.18.0でバグが見つかって更新されました

2021/01/03
DockerHub上のnginxイメージ
1.18.1 stable 1.18
というふうに変わっていく

ここで、2021/01/01の1.18.0を選んでると
01/03に更新された1.18.1versionを使えずバグは残り続ける。
1.18を選んでると、自動的にRevision Versionが更新され続けていく

赤線部Perl/Alpineについて

perl
・どのOSで開くか(下記の画像参考に)

-alpine
・軽量化されたパック(必要最低限のファイルしかない)
・都度カスタマイズする必要がある。

3.Docker-composeとは

・複数のコンテナで構成されるアプリケーションについて、
Dockerイメージのビルドや各コンテナの起動・停止などをより簡単に行えるようにするツールです。

Dockerイメージのビルドとは
・イメージに対して自分で
docker-composer.yml上にカスタマイズして、自分独自のイメージを作成すること

docker-compose.ymlとは
・複数のコンテナの定義をymlファイルに書き、それを利用してDockerビルドやコンテナ起動をすることで、
簡単なコマンドで複数のコンテナを管理できるようになります。

4.docker-compose.ymlの書き方

yamlの書き方のversion


version: "3.7"      [ymlのversion
services:         [serviceというコンテナを管理する
  nginx:               [nginxの名前は何でも良いが、アプリ名を書くのがベター
    build: ./nginx     [Dockerfileを使ってimageをカスタマイズする

    ports:             [右の80はローカル側のポート:左はDocker側のポート
      - "80:80"     [左のポート番号は、落としたいDockerFile内にポート番号が書かれてる(**画像1**)
     volumes:         [localとコンテナ内を共通化する
        - ./infra/nginx/default.conf:/etc/nginx/conf.d/default.conf [ホストdefault.confを同期 

** 画像1 ** EXPOSEがDocker側のポート番号(Nginxの場合は80)

5.勝手な復習なのでスキップしてください