Container Runtime Interface (CRI) を通して、コンテナランタイムと通信し、イメージとコンテナを管理します。イメージに関する機能 | Docker | Containerd |
ローカルイメージリストを表示 | docker images | crictl images |
イメージをダウンロード | docker pull | crictl pull |
イメージをアップロード | docker push | None |
ローカルイメージを削除 | docker rmi | crictl rmi |
イメージ詳細を閲覧 | docker inspect IMAGE-ID | crictl inspecti IMAGE-ID |
コンテナに関する機能 | Docker | Containerd |
コンテナリストを表示 | docker ps | crictl ps |
コンテナを作成 | docker create | crictl create |
コンテナを起動 | docker start | crictl start |
コンテナを停止 | docker stop | crictl stop |
コンテナを削除 | docker rm | crictl rm |
コンテナ詳細を閲覧 | docker inspect | crictl inspect |
attach | docker attach | crictl attach |
exec | docker exec | crictl exec |
logs | docker logs | crictl logs |
stats | docker stats | crictl stats |
PODに関する機能 | Docker | Containerd |
PODリストを表示 | None | crictl pods |
PODの詳細を閲覧 | None | crictl inspectp |
PODを実行 | None | crictl runp |
PODを停止 | None | crictl stopp |
kubelet --> docker shim (kubeletプロセスに存在) --> dockerd --> containerdkubelet --> cri plugin(containerdプロセスに存在) --> containerdKubectl exec/logs といったコマンドは、apiserver とコンテナランタイムの間にストリーム転送チャネルを構築する必要があります。
[plugins.cri]stream_server_address = "127.0.0.1"stream_server_port = "0"enable_tls_streaming = false
比較項目 | Docker | Containerd |
保存パス | Docker を K8S コンテナとして実行する際、コンテナログの書き込みは docker によって行われ、/var/lib/docker/containers/$CONTAINERID のようなディレクトリに保存されます。Kubelet は /var/log/pods と /var/log/containers の下に /var/lib/docker/containers/$CONTAINERID ディレクトリ下にあるコンテナログファイルを指すソフトリンクを作成します。 | Containerd を K8S コンテナとして実行する際、コンテナログの書き込みは Kubelet によって行われ、 /var/log/pods/$CONTAINER_NAME ディレクトリに保存されると同時に、 /var/log/containers ディレクトリにログファイルを指すソフトリンクを作成します。 |
設定パラメータ | Dockerの設定ファイルで次を指定します。 "log-driver": "json-file","log-opts": {"max-size": "100m","max-file": "5"} | 方法1: Kubelet パラメータに次を指定します。--container-log-max-files=5 --container-log-max-size="100Mi" 方法2: KubeletConfiguration で次を指定します。"containerLogMaxSize": "100Mi","containerLogMaxFiles": 5, |
コンテナログをデータディスクに保存 | データディスクを 「data-root」(デフォルトは /var/lib/docker)へマウントしてください。 | データディスクのマウントポイント配下のあるディレクトリを指すソフトリンク /var/log/pods を作成します。TKE で 「コンテナとイメージをデータディスクに保存」 を選択すると、自動でソフトリンク /var/log/pods が作成されます。 |
比較項目 | Docker | Containerd |
CNIの呼出元 | Kubelet 内の docker-shim | Containerd 内の cri-plugin(containerd 1.1 以降) |
CNI の設定方法 | Kubelet パラメータ --cni-bin-dir と --cni-conf-dir | Containerd 設定ファイル(toml): [plugins.cri.cni]bin_dir = "/opt/cni/bin"conf_dir = "/etc/cni/net.d" |
フィードバック