最近ドッキングウィンドウコンテナを使用する場合は、100%までagettyでは、プロセスのCPU使用率のホストを発見しました。
Googleでその理由は、次を検索し、この問題の原因は、「/ sbinに/ initを」使用している場合、パラメータを「--privileged」「ドッキングウィンドウの実行」の実行コンテナを使用することです。
コンテナを起動し、ホストの白紙委任許可を得るために--privilegedパラメータ、同等のドッキングウィンドウコンテナを追加するために/ sbinに/ initを使用してください。この場合、ドッキングウィンドウの内側のinitホスト初期化コンテナーは、混乱の原因となります。
#通過に対するGoogleの参照:
私はそれが(事実、あなたはそれのクールは、先に行くと、お使いのシステムリソースを管理し、それを与えるためにすることをお使いのシステムにこの第二のinitプロセスを言っているので危険だ、特に以来、--privileged使用せずに、それらのすべての私のテストを行ってきましただけでなく、それらへのアクセス)。私はいつも非常に慎重に使用するためのハンマーとして--privileged考えます。
コンテナを起動したときの安全性の理由から、ドッキングウィンドウコンテナシステムにのみいくつかの一般的なLinuxの権限を持っている、それがすべての権限本当のrootユーザーを持っていません。--privileged = trueパラメータは、ドッキングウィンドウコンテナは、すべての権利Linuxのrootユーザーを持つことができます。
この問題を解決するために、それ以降のバージョンでドッキングウィンドウのドッキングウィンドウの実行には、2つのオプションパラメータ「--cap-追加」および「--capドロップ」を追加しました。
--cap-追加:GET権限デフォルトのLinuxを超えて
--capドロップ:デフォルトのLinuxの権限を放棄
ドキュメントは、ドッキングウィンドウコンテナは、既定のアクセス許可を持っている、ドッキングウィンドウの公式ウェブサイトから見つけることができると、次のように--cap-addが拡大する許可を得ることができます。
デフォルト権限:
機能キー |
機能の説明 |
SETPCAP |
プロセス能力を変更します。 |
MKNOD |
mknod(2)を使用した特殊ファイルを作成します。 |
AUDIT_WRITE |
カーネル監査ログへの書き込みを記録。 |
CHOWN |
ファイルのUIDとGIDへの任意の変更を行います(chownコマンド(2)を参照)。 |
NET_RAW |
使用RAWとPACKETソケット。 |
DAC_OVERRIDE |
バイパスファイルの読み取り、書き込み、および権限チェックを実行します。 |
FOWNER |
通常、必要な操作上の権限チェックのバイパス ファイルのUIDと一致するプロセスのファイルシステムUID。 |
FSETID |
明らかにset-user-IDとset-group-ID許可ビットにしないでください ファイルが変更されたとき。 |
殺します |
信号を送信するためのバイパス権限チェック。 |
SETGID |
プロセスのGIDと補助の任意の操作を行います GIDリスト。 |
SETUID |
プロセスのUIDに対する任意の操作を行います。 |
NET_BIND_SERVICE |
インターネットドメインの特権ポートにソケットをバインド (1024未満のポート番号)。 |
SYS_CHROOT |
使用のchroot(2)、ルートディレクトリを変更。 |
SETFCAP |
設定ファイル機能を提供します。 |
--cap-ADD権限が取得しました:
機能キー |
機能の説明 |
SYS_MODULE |
ロードとアンロードカーネルモジュール。 |
SYS_RAWIO |
I / Oポートの動作(IOPL(2)とはioperm(2))を行います。 |
SYS_PACCT |
使用ACCT(2)、オンまたはオフに占めるスイッチ処理。 |
SYS_ADMIN |
システム管理操作の範囲を実行します。 |
SYS_NICE |
昇給プロセスのnice値(ナイス(2)、のsetpriority(2))と、 任意のプロセスのnice値を変更します。 |
SYS_RESOURCE |
リソース制限をオーバーライドします。 |
SYS_TIME |
設定されたシステムクロック(settimeofday(2)、STIME(2)adjtimex(2))。 リアルタイム(ハードウェア)クロックを設定。 |
SYS_TTY_CONFIG |
使用vhangup(2); 様々な特権のioctl(2)操作を用います 仮想端末上。 |
audit_control |
Enable and disable kernel auditing; change auditing filter rules; retrieve auditing status and filtering rules. |
MAC_OVERRIDE |
Allow MAC configuration or state changes. Implemented for the Smack LSM. |
MAC_ADMIN |
Override Mandatory Access Control (MAC). Implemented for the Smack Linux Security Module (LSM). |
NET_ADMIN |
Perform various network-related operations. |
SYSLOG |
Perform privileged syslog(2) operations. |
DAC_READ_SEARCH |
Bypass file read permission checks and directory read and execute permission checks. |
LINUX_IMMUTABLE |
Set the FS_APPEND_FL and FS_IMMUTABLE_FL i-node flags. |
NET_BROADCAST |
Make socket broadcasts, and listen to multicasts. |
IPC_LOCK |
Lock memory (mlock(2), mlockall(2), mmap(2), shmctl(2)). |
IPC_OWNER |
Bypass permission checks for operations on System V IPC objects. |
SYS_PTRACE |
Trace arbitrary processes using ptrace(2). |
SYS_BOOT |
Use reboot(2) and kexec_load(2), reboot and load a new kernel for later execution. |
LEASE |
Establish leases on arbitrary files (see fcntl(2)). |
WAKE_ALARM |
Trigger something that will wake up the system. |
BLOCK_SUSPEND |
Employ features that can block system suspend. |
所以,在运行容器时,可以不用--privileged参数的尽量不用,用--cap-add参数替代。如果必须使用--privileged=true参数的,可以通过在宿主机和容器中执行以下命令将agetty关闭。
shell> systemctl stop [email protected]
shell> systemctl mask [email protected]
参考资料:
https://github.com/docker/docker/issues/4040
https://docs.docker.com/engine/reference/run/