generated at
Docker

コンテナとホストの隔離技術
3つぐらいある
低レベルランタイム
spacがある
実装
高レベルランタイム
大きく2つ
人間向け
開発者がコンテナを使うランタイム
なーどctl
先進的な機能を試したい時に使う
k8s上で使われるCRIインタフェースを実装しているランタイム
Dockerをホストで動かすとおこること
dockerdにhttpコマンドがわたる
dockerd
Dockerが出た時
もともとは1つの大きなデーモン
dockerdContainerdにイメージデータを渡してコンテナ作成を支持する。するとOCIランタイムをつかってコンテナを作る
k8sの流れ
ユーザーのManifestがk8sのコンポーネントに送られ、podがメタデータとして追加。作成
どのカードで実行するかスケジューリング
Pod作成
kubeletは各ホストにいるエージェント。これが指示を受け取ってPodを作成する
kubeletは各種命令をCRIランタイムに出す
コンテナ作成、イメージのpull命令、展開、実行時情報の準備
kubeletは直接コンテナをつくらない
どう指示を出す?
ソケット経由
gRPCを使っている
むかしは直でDocker APIを叩いていた
1.20からdeprecated
ルートファイルシステムのデータや実行時情報をOCIランタイムにわたし、処理命令をする


提供するもの
>コンテナの作成やコンテナ内でファイルシステムとして使われるイメージの作成および管理、コンテナの実行といった機能
提供しないもの
>ネットワークのルーティングや複数コンテナの連携、複数台のサーバーを対象にコンテナを横断的に管理する機能などは提供されていない
著者が勉強したときに書いた図による説明
NodeでTodoアプリ作成
Dockerfileの作成
docker build でDockerfileからイメージを作成する
> The CMD directive specifies the default command to run when starting a container from this image.
ビルドがこける
docker run でサーバーの起動
コード修正して再度ビルド
修正したアプリを docker run するもポートが同じなので起動に失敗する
以前のContainerを取り除く
docker ps
docker rm -f



todo
empty Dockerアプリケーションの構成

素振り

テスト