Open10

改めてコンテナに入門する

t-kikuct-kikuc

コンテナのここがまだよくわかってない

  • コンテナイメージとは?何が含まれる?どれぐらい重いの?
  • 実行中のイメージ: 何が起こってる?プロセスとの関係は?
  • マルチステージビルドって何?
  • image buildでは何が行われる?
  • コンテナランタイムって何?何をしていて、何をしていないの?
  • ネットワーク: コンテナ間通信とかコンテナ外との通信時の設定方法やアドレス指定方法でトラブらないようにしたい

Zennスクラップを使うことで、インプットを放置すると無知がPublicに晒されて続ける危険性を負い、インプットを急かすことを試してみる

t-kikuct-kikuc

まずは『Docker/Kubernetes 実践コンテナ開発入門 改訂新版』

https://www.amazon.co.jp/dp/4297140179

t-kikuct-kikuc

書籍の構成

  • 1-4章: コンテナ,Dockerの基本
  • 5-8章: Kubernetes入門〜応用
  • 9-12章: 運用(ログ、HA、最適イメージ、デリバリ、活用方法)

重視したい章

  • 2章: dockerの各コマンドで何が起こっているかを再確認したい
  • 3章: 実用面 ポイントを押さえておきたい
  • 8章-2: Helm使う時のフローが何もわからんから理解したい
  • 10章: イメージ作成のベストプラクティス押さえておきたい
t-kikuct-kikuc

コンテナ,Dockerの基本

t-kikuct-kikuc

コンテナイメージ: 設計図

  • ベースイメージ
  • アプリケーションコード
  • 依存関係
  • 設定ファイル
  • 実行時の環境設定

コンテナ: インスタンス

  • 具現化されたファイルシステム + Running Application
t-kikuct-kikuc

Dockerfileのインストラクション

ビルド時に使われるもの

  • FROM
  • RUN
  • COPY
  • ADD
  • WORKDIR
  • ENV
  • ARG
  • USER

実行時に使われるもの

  • CMD: 実行時に上書き可能
  • ENTRYPOINT
  • EXPOSE
  • VOLUME
  • HEALTHCHECK
t-kikuct-kikuc

ENTRYPOINTとCMDの使い分け

ENTRYPOINTとCMDの使い分け方

  1. コンテナが常に特定のコマンドを実行する必要がある場合: ENTRYPOINTのみ使用
    • 例: ENTRYPOINT ["nginx", "-g", "daemon off;"](nginxを常に実行する)
  2. コンテナのデフォルトの動作を指定したいが、ユーザーがコマンドを上書きできるようにしたい場合: CMDのみ使用
    • 例: CMD ["echo", "Hello, World!"](デフォルトでHello, World!を表示するが、他のコマンドも実行できる)
  3. ENTRYPOINTでメインのコマンドを指定し、CMDでそのコマンドに渡すデフォルトの引数を指定する。: ENTRYPOINT&CMD
t-kikuct-kikuc

docker image build

--pullオプション

  • --pull=trueで、強制的にベースイメージをレジストリから再取得する
    • 普段はホスト内で保持されたのを使うため、latestなどのMutableイメージだとまずい
t-kikuct-kikuc

コンテナの操作は

  1. コンテナイメージの操作
  2. コンテナの操作
    の2つに大別される
t-kikuct-kikuc

コンテナのライフサイクル

  1. Running
  2. Stopped
  3. Removed