私が持っています docker-compose.yml
このような:
version: '3'
services:
mysql:
image: mysql
volumes:
- data:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=$ROOT_PASSWORD
volumes:
data:
そして、私のマウントポイントは次のようになります:/var/lib/docker/volumes/some_app/_data
そして、そのマウントポイントからデータにアクセスしたいのですが、Windowsマシンでそれを行う方法がわかりません。 Docker仮想マシンからディレクトリにデータを渡すことができる追加のコンテナを作成できるかもしれませんか?
このようにフォルダをマウントする場合:
volumes:
- ./data:/var/lib/mysql
ローカルディレクトリを使用する-アクセス許可の問題のため、成功しませんでした。そして、「正しい方法」はDockerボリュームを使用していることを読んでください。
UPD:MySQLコンテナは単なる例です。このような動作をコードベースに使用し、dockerfoeローカル開発を使用したいと思います。
WindowsでのLinuxコンテナの場合、dockerはLinux仮想マシン上で実際に実行されるため、named
ボリュームはのローカルディレクトリのマッピングです。そのVMコンテナ内のディレクトリに。
したがって、/var/lib/docker/volumes/some_app/_data
として取得したのは、そのVM内のディレクトリです。それを検査するには、次のことができます。
docker run --rm -it -v /:/vm-root Alpine:Edge ls -l /vm-root/var/lib/docker/volumes/some_app/_data
total 188476
-rw-r----- 1 999 ping 56 Jun 4 04:49 auto.cnf
-rw------- 1 999 ping 1675 Jun 4 04:49 ca-key.pem
-rw-r--r-- 1 999 ping 1074 Jun 4 04:49 ca.pem
-rw-r--r-- 1 999 ping 1078 Jun 4 04:49 client-cert.pem
-rw------- 1 999 ping 1679 Jun 4 04:49 client-key.pem
-rw-r----- 1 999 ping 1321 Jun 4 04:50 ib_buffer_pool
-rw-r----- 1 999 ping 50331648 Jun 4 04:50 ib_logfile0
-rw-r----- 1 999 ping 50331648 Jun 4 04:49 ib_logfile1
-rw-r----- 1 999 ping 79691776 Jun 4 04:50 ibdata1
-rw-r----- 1 999 ping 12582912 Jun 4 04:50 ibtmp1
drwxr-x--- 2 999 ping 4096 Jun 4 04:49 mysql
drwxr-x--- 2 999 ping 4096 Jun 4 04:49 performance_schema
-rw------- 1 999 ping 1679 Jun 4 04:49 private_key.pem
-rw-r--r-- 1 999 ping 451 Jun 4 04:49 public_key.pem
-rw-r--r-- 1 999 ping 1078 Jun 4 04:49 server-cert.pem
-rw------- 1 999 ping 1675 Jun 4 04:49 server-key.pem
drwxr-x--- 2 999 ping 12288 Jun 4 04:49 sys
これは、そのVM /
のホールルートファイルシステムをコンテナディレクトリ/vm-root
にマウントした補助コンテナを実行しています。
いくつかのファイルを取得するには、バックグラウンドでいくつかのコマンド(私の場合はtail -f /dev/null
)を使用してコンテナーを実行し、docker cp
を使用できます。
docker run --name volume-holder -d -it -v /:/vm-root Alpine:Edge tail -f /dev/null
docker cp volume-holder:/vm-root/var/lib/docker/volumes/volumes_data/_data/public_key.pem .
そのVMへの透過的なSSHが必要な場合は、2017年6月の時点でまだサポートされていないようです。 ここ 港湾労働者のスタッフがそう言った。