从Windows 10

时间:2019-08-31 10:28:33

标签: docker windows-subsystem-for-linux

在我的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中?

1 个答案:

答案 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在启动时读取更改。

致谢