序文:この質問はかなり古いものであり、OP が回避策を見つけた可能性があることは認識していますが、正確な回答が表示されないため、OP によって提起された質問や関連する問題に対処することが適切だと感じました。
まず、名前付きボリュームとバインド マウントの違いを明確にします。前者では、コンテナーの外部から、コンテナーの場所に既に存在するファイルを表示できますが、後者では表示されません。基本的に、バインド マウントは、xNIX でボリュームをマウントする場合と非常によく似た動作をします。つまり、デバイスがマウントされた後、既にマウント場所にあるファイルはすべてマスクされます。これはオーバーレイと考えてください。
次に、 を./Frontend/ :/var/www/html/
指定するとバインド マウントが指定されます./Frontend
。そのため、ホスト側を調べると、表示されるはずのファイルがすべてなくなっています。私があなたの最終目標を正しく理解していれば/var/www/html/
、コンテナ外のまったく同じ場所からコンテナ内のファイルにアクセスできるようにする必要があります。その場合、次のように、名前付きボリュームとユーザー指定のマウント ポイントを使用することをお勧めします。
volumes:
Frontend:
driver: local
driver_opts:
type: 'none'
o: 'bind'
device: '/var/www/html'
php:
build: php/
volumes:
- Frontend:/var/www/html/
上記のリストがなくてもdriver_opts
、名前付きボリュームは引き続き存在しますが、ホスト側の場所は Docker 領域になることに注意してください。これは通常/var/lib/docker/volumes
、似たようなものです。正確な場所Mounts
は、コマンドのセクションにありdocker inspect
ます。
例
これは、私の PiHole ラボ ホストでの同様のセットアップです。
docker-compose.yml (省略形)
volumes:
etc-pihole:
etc-dnsmasq.d:
etc-unbound:
driver: local
driver_opts:
type: 'none'
o: 'bind'
device: '/home/dockeruser/ct5/etc-unbound'
services:
pihole:
container_name: asbuilt_ct5
hostname: pb-asbuilt-5
volumes:
- './etc-pihole:/etc/pihole/'
- './etc-dnsmasq.d:/etc/dnsmasq.d/'
- 'etc-unbound:/etc/unbound/'
sudo docker inspect
、Mount
セクションのみの出力 (省略)
"Mounts": [
{
"Type": "bind",
"Source": "/home/dockeruser/ct5/etc-dnsmasq.d",
"Destination": "/etc/dnsmasq.d",
},
{
"Type": "bind",
"Source": "/home/dockeruser/ct5/etc-pihole",
"Destination": "/etc/pihole",
},
{
"Type": "volume",
"Name": "ct5_etc-unbound",
"Source": "/var/lib/docker/volumes/ct5_etc-unbound/_data",
"Destination": "/etc/unbound",
"Driver": "local",
}
]
コンテナ ファイル リスト:/etc/unbound
root@pb-asbuilt-5:/# ls /etc/unbound
unbound.conf unbound.conf.d unbound_control.key unbound_control.pem unbound_server.key unbound_server.pem
ホスト側のファイル リスト:/home/dockeruser/ct5/etc-unbound
[dockertest-srv1] > ls /home/dockeruser/ct5/etc-unbound
unbound.conf unbound.conf.d unbound_control.key unbound_control.pem unbound_server.key unbound_server.pem