2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Docker学習2日目

Last updated at Posted at 2024-01-24

Dockerの学習を始めて2日目。
まだ全体の流れがイメージできていない、メモのような内容です。
間違っているところがあるかもしれませんし、
読みづらい記事になっているかと思います。。。
理解が深まり次第、その都度、更新・訂正します!
(間違いのご指摘や、アドバイスいただければとても嬉しいです!)

《目的》

  1. Dockerの理解
  2. docker-composeの理解
  3. コンテナオーケストレーションツール(AWS ECS)の理解

1-3 マルチステージビルド

ステージとは大きな処理をキリのいいところで区切ったもの
例えば、下記のように分ける。

  • テストステージではアプリをコンパイルし動作に異常がないチェック
  • リリースステージでは動作チェック済みのアプリを本番ように作成する
    このようなビルドの仕方をマルチステージビルドという。

1-4 ビルドしてみる

まずは下記の3行だけのDockerfileからDockerimage1というDuckerimageを作成します。

使用コマンドの説明

FROM alpine:3.13.5 AS test
# test ベースイメージはアルパインLinux 3.13.5を使う,`AS`で今記述しているのはテストステージだよと定義
LABEL application=todobackend 
# applicationというキーに対してtodobackendという値を設定、タグをつけてる。
RUN apk add --no-cache bash git
# RUN以降のコマンドを実行してください。apkはアルパインLinuxのパッケージ管理コマンド、addで追加。
# --no-cacheはパッケージを保存しないで=Dockerimageのサイズ削減のためにキャッシュは必要ない。
# bashはトラブルシューティングのために使う。gitはリリースステージ作成のためにインストールする

Dockerfileを読み込んで(ビルドして)Dockerimageを作成していく。
まず、cd DockerfileでDockerfile作成ディレクトリと同じ場所に移動する。
スクリーンショット 2024-01-24 10.31.06.png

ビルドログの解説。
ここで理解すべき大切なことはDockerFileが1行1行指示通り読み込まれているか確認すること。
※初回読み込み時のビルドログをスクショし忘れてしまった為、初回と同じ設定を読み込ませているところはキャッシュしてくれています。Dockerが早い理由の1つはここ。

  1. [internal] load build definition from Dockerfile
    ーDockerfileのビルド定義を読み込んでいます。
  2. **[internal] load .dockerignore.dockerignore **
    ーファイルを読み込んでいます。
  3. [internal] load metadata for docker.io/library/alpine:3.13.5
    ーDocker HubからAlpine Linuxの3.13.5イメージのメタデータを読み込んでいます。
  4. [1/2] FROM docker.io/library/alpine:3.13.5@sha256:1d30d1ba3cb9096206
    ーAlpine Linuxの3.13.5のイメージを取得しています。
  5. CACHED [2/2] RUN apk add --no-cache bash git
    ーキャッシュを使用して、Alpine Linuxイメージに bash と git をインストールしています。(以前に読み込んだものをキャッシュしてくれている。)
  6. exporting to image, naming to docker.io/library/myimage1
    ー最終的なイメージを作成し、名前を myimage1 に付けています。

docker imagesで作成したDockerimegeの参照をし、docker history 《Dockerimage名》で履歴を見れる
スクリーンショット 2024-01-24 11.18.13.png
下から古い順に履歴が表示される。

  1. 青枠
    ーアルパインLinuxをベースイメジで使用していますよの表示
  2. みどり枠
    ーLABELコマンドを実行して、タグつけしたよの表示
  3. 赤枠
    ーRUNから始まるコマンドを実行して、Dockeriamgeを作成したよの表示。この行為のIDはfdd51c4b69daで作成したDockerimages1のIDと一致するはず。
  4. オレンジ枠
    ーRUNコマンド実行して15.2MB、アルパインLinuxをベースにして5.6MB、トータルでこのDockerimage1は20.8MBある

大切なのはDckerimageはレイヤーが重なってできている事。それらレイヤーを全てまとめてDckerimageになっていることを理解する。
下記の図のことを実際に行っていた。
(図ではDocker image2になっているが1だと思ってください)

スクリーンショット 2024-01-24 12.26.00.png

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?