🔖

[SadServers] 解説 "Venice": Am I in a container?

2023/01/10に公開

"Venice": Am I in a container?

SadServersの "Venice": Am I in a container? の解説です。

SadServers って何? って人は、 SadServers解説 を見てください。
一言でいうと、LeetCode (コーディング問題集) の Linuxサーバ設定版のようなものです。

問題

Scenario: "Venice": Am I in a container?

Level: Medium

Description: Try and figure out if you are inside a container (like a Docker one for example) or inside a Virtual Machine (like in the other scenarios).

コンテナの中にいるのか(例えばDockerのような)、仮想マシンの中にいるのか(他のシナリオのような)、試してみてください。

Test: This scenario doesn't have a test (hence also no "Check My Solution" either).

このシナリオにはテストがありません(したがって、「Check My Solution」もありません)。

Time to Solve: 15 minutes.

OS: Debian 11

解説

ググってみると、いろいろな方法があるようです。
https://stackoverflow.com/questions/23513045/how-to-check-if-a-process-is-running-inside-docker-container

ここでは、ルートディレクトリの i-node を調べてみます。

# -i で i-nodeを表示。
root@ip-172-31-43-74:/# ls -ali /
total 72
277640 dr-xr-xr-x   1 root root 4096 Jan  5 09:39 .
277640 dr-xr-xr-x   1 root root 4096 Jan  5 09:39 ..
287384 drwxr-xr-x   1 root root 4096 Sep 24 22:36 bin
277411 drwxr-xr-x   2 root root 4096 Sep  3 12:10 boot
     1 drwxr-xr-x  10 root root 2660 Jan  5 09:39 dev
290181 drwxr-xr-x   1 root root 4096 Jan  5 09:39 etc
396395 drwxr-xr-x   2 root root 4096 Sep  3 12:10 home
420788 drwxr-xr-x   1 root root 4096 Sep 24 22:36 lib
396603 drwxr-xr-x   2 root root 4096 Sep 12 00:00 lib64
396605 drwxr-xr-x   2 root root 4096 Sep 12 00:00 media
396606 drwxr-xr-x   2 root root 4096 Sep 12 00:00 mnt
396607 drwxr-xr-x   2 root root 4096 Sep 12 00:00 opt
     1 dr-xr-xr-x 144 root root    0 Jan  5 09:39 proc
396609 drwx------   2 root root 4096 Sep 12 00:00 root
     1 drwxrwxrwt  11 root root  320 Jan  5 09:39 run
 30311 drwxr-xr-x   1 root root 4096 Sep 24 22:36 sbin
396677 drwxr-xr-x   2 root root 4096 Sep 12 00:00 srv
     1 dr-xr-xr-x  13 root root    0 Jan  5 09:36 sys
     1 drwxrwxrwt   8 root root  160 Jan  5 09:39 tmp
290133 drwxr-xr-x   1 root root 4096 Sep 12 00:00 usr
 31974 drwxr-xr-x   1 root root 4096 Sep 12 00:00 var

277640 dr-xr-xr-x 1 root root 4096 Jan 5 09:39 .

より、 /ルートディレクトリの i-node277640 ということがわかります。

通常ルートディレクトリのi-node2なので、277640 ということは コンテナ内であるということがわかります。

Discussion