Docker
https://gyazo.com/8dbfbad49c1689e36e77019ebdb275bd
コンテナとホストの隔離技術
3つぐらいある
低レベルランタイム
spacがある
実装
高レベルランタイム
大きく2つ
人間向け
開発者がコンテナを使うランタイム
なーどctl
先進的な機能を試したい時に使う
k8s上で使われるCRIインタフェースを実装しているランタイム
Dockerをホストで動かすとおこること
dockerdにhttpコマンドがわたる
dockerd
Dockerが出た時
もともとは1つの大きなデーモン
k8sの流れ
ユーザーのManifestがk8sのコンポーネントに送られ、podがメタデータとして追加。作成
どのカードで実行するかスケジューリング
Pod作成
kubeletは各ホストにいるエージェント。これが指示を受け取ってPodを作成する コンテナ作成、イメージのpull命令、展開、実行時情報の準備
kubeletは直接コンテナをつくらない
どう指示を出す?
ソケット経由
むかしは直で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
https://gyazo.com/7e2b4ba62a81b627c7ec81ae5d9fb960
/icons/todo.icon
/icons/empty.icon Dockerアプリケーションの構成
素振り
テスト