在我的Windows中,我安装了docker和ubuntu 18.4 wsl。因此在本地主机上公开守护程序后,我可以在ubuntu wsl上使用Windows守护程序。
我在驱动器d上创建了目录,并将文件制作到数据目录中,如下所示:
PS D:\wsl\data> dir
Directory: D:\wsl\data
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 8/31/2019 2:27 PM 0 New Text Document.txt
PS D:\wsl\data>
之后,我在wsl teminal上运行如下所示的postgres容器:
$ docker run --name=pg-docker3 -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=s123 -v /mnt/d/wsl/data:/var/lib/postgresql/data mdillon/postgis:11-alpine
创建容器后,我通过bash打开容器:
$ docker exec -it pg-docker3 bash
这是数据postgres目录:
bash-4.4# ls /var/lib/postgresql/data
PG_VERSION pg_commit_ts pg_logical pg_serial pg_subtrans pg_xact postmaster.pid
base pg_dynshmem pg_multixact pg_snapshots pg_tblspc postgresql.auto.conf
data pg_hba.conf pg_notify pg_stat pg_twophase postgresql.conf
global pg_ident.conf pg_replslot pg_stat_tmp pg_wal postmaster.opts
bash-4.4#
您可以看到data
目录的位置,但是当我列出事物在数据目录中时,我可以看到在主机中创建的文本文件!!!
我在数据目录内创建了一个名为kk
的目录。
bash-4.4# ls /var/lib/postgresql/data
PG_VERSION pg_commit_ts pg_logical pg_serial pg_subtrans pg_xact postmaster.pid
base pg_dynshmem pg_multixact pg_snapshots pg_tblspc postgresql.auto.conf
data pg_hba.conf pg_notify pg_stat pg_twophase postgresql.conf
global pg_ident.conf pg_replslot pg_stat_tmp pg_wal postmaster.opts
bash-4.4# ls /var/lib/postgresql/data/data/
kk
bash-4.4#
但不能在主机内部创建此目录,如您所见:
PS D:\wsl\data> dir
Directory: D:\wsl\data
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 8/31/2019 2:27 PM 0 New Text Document.txt
/var/lib/postgresql/data/data/
在哪里?以及为什么它不出现在/ mnt / d / wsl / data中?
答案 0 :(得分:0)
您必须将安装路径从/ mnt移至/。在此答案中,有以下解释:Can you run Docker natively on the new Windows 10 (Ubuntu) bash userspace?
音量
添加卷时请多加注意。路径C:\dir
在WSL上将显示为/mnt/c/dir
,在docker引擎中将显示为/c/dir/
。您可以永久克服它:
sudo bash -c "echo -e '[automount] \nroot = /'>/etc/wsl.conf"
对wsl.conf进行更改后,必须退出并重新加载WSL,以便WSL在启动时读取更改。
致谢