1. ホーム
  2. shell

[解決済み] dockerコンテナ内でプロセスが実行されているかどうかを確認するには?

2022-10-13 22:27:47

質問

[Updated1] TCP カーネルパラメータを変更するシェルがありますが、このシェルを Docker コンテナ内で実行する必要があります。

今、私はそれを達成する方法がわからない、以下は、コンテンツが /proc/self/cgroup の中身をコンテナの中に入れています。

9:hugetlb:/
8:perf_event:/
7:blkio:/
6:freezer:/
5:devices:/
4:memory:/
3:cpuacct:/
2:cpu:/docker/25ef774c390558ad8c4e9a8590b6a1956231aae404d6a7aba4dde320ff569b8b
1:cpuset:/

このプロセスがコンテナ内で実行されているかどうかを判断するために、上記のどのようなフラグを使用できますか?

[更新2]。また、私は lxc/Docker 内部でプロセスが動作しているかどうかの判定 というのがあるのですが、この場合はうまくいかないようです。 /proc/1/cgroup の内容は、私のコンテナの

8:perf_event:/
7:blkio:/
6:freezer:/
5:devices:/
4:memory:/
3:cpuacct:/
2:cpu:/docker/25ef774c390558ad8c4e9a8590b6a1956231aae404d6a7aba4dde320ff569b8b
1:cpuset:/

いいえ /lxc/containerid

どのように解決するのですか?

Dockerコンテナの中にいるかどうかを確認するには、以下の方法で行うことができます。 /proc/1/cgroup . として この記事 は、次のようにすることができます示唆している。

dockerコンテナの外側で、すべてのエントリを /proc/1/cgroup で終了します。 / のようになります。

vagrant@ubuntu-13:~$ cat /proc/1/cgroup
11:name=systemd:/
10:hugetlb:/
9:perf_event:/
8:blkio:/
7:freezer:/
6:devices:/
5:memory:/
4:cpuacct:/
3:cpu:/
2:cpuset:/

Dockerコンテナ内では、制御グループの一部がDocker(またはLXC)に所属することになります。

vagrant@ubuntu-13:~$ docker run busybox cat /proc/1/cgroup
11:name=systemd:/
10:hugetlb:/
9:perf_event:/
8:blkio:/
7:freezer:/
6:devices:/docker/3601745b3bd54d9780436faa5f0e4f72bb46231663bb99a6bb892764917832c2
5:memory:/
4:cpuacct:/
3:cpu:/docker/3601745b3bd54d9780436faa5f0e4f72bb46231663bb99a6bb892764917832c2
2:cpuset:/