GNU/Linux >> Linux の 問題 >  >> Linux

ドッカーはcgroupドライバーをsystemdに変更します

systemd ユニットやドロップインの編集を伴わない解決策は、 /etc/docker/daemon.json を作成 (または編集) することです 構成ファイルに以下を含めます:

{
  "exec-opts": ["native.cgroupdriver=systemd"]
}

保存したら、docker サービスを再起動してください。

sudo systemctl restart docker

このソリューションは、システム全体に適用したい場合にのみ実行可能です。


2 つの構成ファイルがあるため、2 番目の構成ファイルにもエントリを追加する必要があります -- /etc/systemd/system/docker.service.d/docker-thinpool.conf :

--exec-opt native.cgroupdriver=systemd \

追加するだけで、cgroupfs は Docker 独自のコントロール グループ マネージャーです。ただし、大部分の Linux ディストリビューションでは、現在 ssytemd がデフォルトの init システムであり、systemd は Linux コントロール グループと緊密に統合されています。Kubernetes サイトでは、systemd と一緒に cgroupfs を使用することは最適ではないように思われるため、systemd の使用を推奨しています (以下を参照)。 /P>

そのため、cgroup の管理には systemd を使用することをお勧めします。 kubelet はデフォルトで systemd を使用するように設定されています。そのため、Docker を変更して systemd Cgroup ドライバーを使用する方が簡単で優れています

この重複の歴史はこちら https://lwn.net/Articles/676831/

Kubernetes サイトでは、systemd の使用を推奨しています https://kubernetes.io/docs/setup/production-environment/container-runtimes/

<ブロック引用>

cgroup ドライバー systemd が Linux ディストリビューションの init システムとして選択されると、init プロセスはルート コントロール グループ (cgroup) を生成および消費し、cgroup マネージャーとして機能します。 Systemd は cgroup と緊密に統合されており、プロセスごとに cgroup を割り当てます。コンテナー ランタイムと kubelet を構成して、cgroupfs を使用することができます。 systemd と一緒に cgroupfs を使用すると、2 つの異なる cgroup マネージャーが存在することになります。

制御グループは、プロセスに割り当てられるリソースを制限するために使用されます。単一の cgroup マネージャーにより、どのリソースが割り当てられているかのビューが簡素化され、デフォルトで、使用可能なリソースと使用中のリソースの一貫したビューが表示されます。マネージャーが 2 人いる場合、それらのリソースのビューは 2 つになります。 kubelet と Docker に cgroupfs を使用するように構成されたノードと、ノードで実行されている残りのプロセスに systemd を使用するように構成されているノードが、リソース不足で不安定になるケースをフィールドで見てきました。


Linux
  1. docker bridgeのデフォルトIPアドレスを変更する方法

  2. Dockerコンテナのタイムゾーンを変更する方法

  3. MySQL Docker で監査ログのパスを変更する方法

  1. Amazon Linux AMI での Docker のアップグレード

  2. cron の代わりに systemd タイマーを使用する

  3. Red Hat Linux で Docker ルート ディレクトリを変更しますか?

  1. パスワードの変更

  2. Nixos構成でSystemdStopJob Timeoutを変更しますか?

  3. 一連のSystemdサービスファイルのユーザーを変更するにはどうすればよいですか?