Open10
改めてコンテナに入門する
コンテナのここがまだよくわかってない
- コンテナイメージとは?何が含まれる?どれぐらい重いの?
- 実行中のイメージ: 何が起こってる?プロセスとの関係は?
- マルチステージビルドって何?
- image buildでは何が行われる?
- コンテナランタイムって何?何をしていて、何をしていないの?
- ネットワーク: コンテナ間通信とかコンテナ外との通信時の設定方法やアドレス指定方法でトラブらないようにしたい
Zennスクラップを使うことで、インプットを放置すると無知がPublicに晒されて続ける危険性を負い、インプットを急かすことを試してみる
まずは『Docker/Kubernetes 実践コンテナ開発入門 改訂新版』
書籍の構成
- 1-4章: コンテナ,Dockerの基本
- 5-8章: Kubernetes入門〜応用
- 9-12章: 運用(ログ、HA、最適イメージ、デリバリ、活用方法)
重視したい章
- 2章: dockerの各コマンドで何が起こっているかを再確認したい
- 3章: 実用面 ポイントを押さえておきたい
- 8章-2: Helm使う時のフローが何もわからんから理解したい
- 10章: イメージ作成のベストプラクティス押さえておきたい
コンテナ,Dockerの基本
コンテナイメージ: 設計図
- ベースイメージ
- アプリケーションコード
- 依存関係
- 設定ファイル
- 実行時の環境設定
コンテナ: インスタンス
- 具現化されたファイルシステム + Running Application
Dockerfileのインストラクション
ビルド時に使われるもの
- FROM
- RUN
- COPY
- ADD
- WORKDIR
- ENV
- ARG
- USER
実行時に使われるもの
- CMD: 実行時に上書き可能
- ENTRYPOINT
- EXPOSE
- VOLUME
- HEALTHCHECK
ENTRYPOINTとCMDの使い分け
ENTRYPOINTとCMDの使い分け方
- コンテナが常に特定のコマンドを実行する必要がある場合: ENTRYPOINTのみ使用
- 例: ENTRYPOINT ["nginx", "-g", "daemon off;"](nginxを常に実行する)
- コンテナのデフォルトの動作を指定したいが、ユーザーがコマンドを上書きできるようにしたい場合: CMDのみ使用
- 例: CMD ["echo", "Hello, World!"](デフォルトでHello, World!を表示するが、他のコマンドも実行できる)
- ENTRYPOINTでメインのコマンドを指定し、CMDでそのコマンドに渡すデフォルトの引数を指定する。: ENTRYPOINT&CMD
docker image build
--pull
オプション
-
--pull=true
で、強制的にベースイメージをレジストリから再取得する- 普段はホスト内で保持されたのを使うため、
latest
などのMutableイメージだとまずい
- 普段はホスト内で保持されたのを使うため、
コンテナの操作は
- コンテナイメージの操作
- コンテナの操作
の2つに大別される
コンテナのライフサイクル
- Running
- Stopped
- Removed