私は次の例を持っています
version: '2'
services:
proxy:
container_name: proxy
hostname: proxy
image: nginx
ports:
- 80:80
- 443:443
volumes:
- proxy_conf:/etc/nginx
- proxy_htdocs:/usr/share/nginx/html
volumes:
proxy_conf: {}
proxy_htdocs: {}
これは正常に動作します。 docker-compose up
を実行すると、/var/lib/docker/volumes
に名前付きボリュームが作成され、すべて問題ありません。ただし、ホストからは、ルートとして/var/lib/docker
にしかアクセスできません。これは、root:root
であるためです(意味があります)。ホストのディレクトリをより賢明で安全なもの(たとえば、ホスト上でほとんどのことを行うために使用する比較的特権のないユーザー)にchown
する方法があるのか、それとも単にそれを吸う必要があるのか疑問に思いました。手動でアップしてchown
します。他の問題を回避するためのスクリプトがすでにいくつかあるようになっているので、数行余分に追加してもそれほど問題にはなりませんが、自分で作成した自動化を最小限に抑えたいと思っています。できます-愚かな間違いの可能性が少なくなります。
ちなみに、いいえ。ボリュームを作成する代わりにホストディレクトリをマウントすると、それらはオーバーレイされます。つまり、空で開始すると空のままになり、コンテナ内からデフォルトの構成(またはその他)を取得できません。
追加のポイント:ボリュームをより便利な場所に移動できますか?言う、/home/myuser/myserverstuff/volumes
?
/var/lib/docker
内のファイルに直接アクセスしようとしないことをお勧めします。これらのディレクトリは、dockerデーモンによって管理されることを目的としており、混乱することはありません。
ボリューム内のデータにアクセスするには、いくつかのオプションがあります。
ssh
を実行しているコンテナ(scp
を使用する場合)またはSAMBAコンテナ( svendowideit/samba )/var/lib/docker
の外部)