この特定の設定は、docker が実行されるネットワーク名前空間の影響を受けます。
原則として /proc
技術的に言えば、システム全体に関連する設定を変更しますが、 /proc/net
で設定を変更しています ネットワーク名前空間ごとに結果を返します。
/proc/net
に注意してください 実際には /proc/self/net
へのシンボリックリンクです 作業を行っている名前空間の設定が実際に反映されるためです。
Docker 1.12+ には、コンテナー内の sysctl 値を微調整するためのネイティブ サポートがあります。以下はドキュメントからの抜粋です:
<ブロック引用>実行時に名前空間付きのカーネル パラメータ (sysctls) を構成する
--sysctl は、名前空間付きのカーネル パラメーター (sysctls) をコンテナーに設定します。たとえば、コンテナ ネットワークの名前空間で IP 転送を有効にするには、次のコマンドを実行します。
docker run --sysctl net.ipv4.ip_forward=1 someimage
あなたの例を使用して、 net.core.somaxconn
を上げる正しい方法
docker run ... --sysctl net.core.somaxconn=65535 ...
特権コンテナーは、/proc
に対して独自のプロセス名前空間を引き続き使用しています .あなたができることは、実際の /proc
をマウントすることです コンテナ内:
docker run --rm --privileged -v /proc:/host-proc ubuntu:latest \
'echo 65535 > /host-proc/sys/net/core/somaxconn'