渡すその他私の言葉は、このコマンドを発見したということです。nsenter
そして、名前空間を使用してデバッグするのに適した他のツール/コマンドがあるかもしれないと思いました。どこ?私は彼らがどのように機能するのかを尋ねるのではなく、docker / k8sなどを使用するためのより広範なツールセットを手に入れることに注意してください。
namespace
Linuxには他のどのコマンドがありますか?
答え1
[あり]名前空間の操作とデバッグに適した他のツール/コマンドはありますか?
エルンスル最も重要なことです。いくつかありますが、多くはありません。私はそれらをすべてリストしようと思った。
/proc/[pid]/ns/*
- 見たことがあるのですでに知っているのですnsenter
。詳細がありますネームスペース(7):- 上記のファイルはシンボリックリンクとして表示されます。
readlink
/を実行すると、ls -l
名前空間の種類と一意の識別子が表示されます。 - 上記のファイルをバインドマウントして、名前空間への永続参照を維持できます。これが少し奇妙に聞こえると思われる場合は同意します。しかし、場合によっては便利かもしれません :-)。
- 上記のファイルはシンボリックリンクとして表示されます。
- LSNS-
/proc
Web をクロールし、使用中のさまざまな名前空間をすべて一覧表示します。 /proc/[pid]/mountinfo
マウントネームスペースについて説明します。に記録されています。工程(5)。コラムが多いので初めてご覧になる際はご注意ください。たとえば、
rw
/値が異なる2つの異なるオプション列があるとしますro
。違いは、同じファイルシステムのバインドマウント間でマウントオプションの列が異なる可能性があることです。findmnt
マウントされたファイルシステムを一覧表示する標準コマンドです。オプションがあるため、これを使用してすべてのプロセスのファイルを--task TID
解析できます。mountinfo
(PID値も有効なTIDです。)/proc/[pid]/uid_map
/proc/[pid]/gid_map
そしてユーザーネームスペース。ip
ネットワークインタフェース制御コマンド:- IPネットワーク具体的には、ネットワーク名前空間に対するいくつかのコマンドを提供します。つまり、
net
上記のようにファイルを使用します。/proc/[pid]/ns/
ip link
veth
以下を含むピアに関する情報を表示できます。地元のピアが存在するネットワーク名前空間の識別子。ip netns list-id
または、lsns -t net
このローカル識別子を含むネットワーク名前空間が一覧表示されます。これらのローカル識別子をどのように使用するのか分かりません。少しあいまいなようです。しかし、このQAでは、あなたができることすべてに言及したと思います。vethピアノードifindexのネットワークネームスペースを見つける方法は?ip
また、インターフェイスをあるネットワークから別のネットワークに移動できます。これはデバッグとは関係ありませんが。
- IPネットワーク具体的には、ネットワーク名前空間に対するいくつかのコマンドを提供します。つまり、
「私はあなたを見ている、単一のバイナリgo
コンテナ」
から適応別のコンテナで実行されているDockerコンテナをデバッグする方法:
使用上の問題nsenter
。入力したらマウントネームスペースコンテナ内のコマンドは、コンテナ内に含まれるコマンドのみを実行できます。しかし、Dockerコンテナの中核は、アプリケーション自体を含めるだけです。
秘訣は/proc/[pid]/root/
。proc(5)
)。
入力するととても便利です。PID名前空間その後、正しいPIDを/proc/1/root/
検索する必要はありません。
PID 名前空間にある場合、デバッガを接続するプロセスがコンテナ内の PID 1 (または PID 2) になることがわかっている場合にも非常に便利です。あるいは、アプリケーション/コンテナがマルチプロセスの場合は、お気に入りのps
コマンドを使用してさまざまなプロセスを表示できます。