web-dev-qa-db-ja.com

Dockerコンテナの/ etc / hostsに/ dev / sda1をマウントする意味は何ですか

Sudo docker run -it ubuntu:latest /bin/bashを使用して単純なDockerコンテナーを実行します

マウントされたファイルシステムを調べると、df -h、1つ

Filesystem      Size  Used Avail Use% Mounted on
overlay          63G  4.3G   56G   8% /
tmpfs            64M     0   64M   0% /dev
tmpfs          1000M     0 1000M   0% /sys/fs/cgroup
/dev/sda1        63G  4.3G   56G   8% /etc/hosts
....

最後の行、つまり/dev/sda1 -> /etc/hostsを理解できません。ホスト・マシンでdf -hを実行すると、マウント/dev/sda1 -> /が取得されます。

つまり、/dev/sda1は実際には私のハードドライブです。なぜそれがコンテナの/etc/hostsにマウントされているのですか、そしてなぜコンテナの/etc/hostsは正しい内容のファイルなのですか。

ここで何が起こっているのか説明はありますか?これはどのように作動しますか?

編集:findmntの関連する出力:

`-/etc/hosts                    /dev/sda1[/lib/docker/containers/b18928987f05513ea9fcc9bd630e9efb0f92e51f48afd215426ba4cd83967fc1/hosts]
                                                                                                                     ext4    rw,relatime,data=ordered
1
Anton.P

Linuxでは、同じファイルシステムを複数のパスにマウント(binding)できます。また、既存のディレクトリを別のディレクトリにバインドしたり、ファイルを別のファイルにバインドしたりすることもできます。

これはシンボリックリンクと同様に使用されますが、コンテナまたはchrootの境界を越えることができます。ホストからのファイルがコンテナ内のファイルにバインドマウントされている場合でも、コンテナはそれにアクセスできます。

dfは、マウント情報を古い「mtab」形式で読み取るため、デバイスのみを表示します。古い「mtab」形式では、そのような情報について十分な情報がありません。 (ただし、ディレクトリのバインドマウントではまだ意味があります。)

2
user1686