【问题标题】:Where do "host" in docker-desktop refer to?docker-desktop 中的“主机”指的是哪里?
【发布时间】:2021-09-12 14:02:39
【问题描述】:

我正在尝试使用 Docker API 创建一个容器。

我的环境如下:

  • Windows 11(我猜它也应该在 Windows 10 中运行)
  • Docker 桌面版v20.10.8 勾选了以下设置:
    • 基于 WS2 的引擎
    • 在没有 TLS 的情况下在 tcp://localhost:2375 上公开守护进程

我的 curl 请求如下:

curl --location --request POST 'http://localhost:2375/v1.41/containers/create?name=oraumum' \
--header 'Content-Type: application/json' \
--data-raw '{
  "Image": "nginx",
  "Volumes": {
    "/volumes/data": { }
  },
  "ExposedPorts": {
    "80/tcp": {}
  },
  "HostConfig": {
    "PortBindings": {
      "80/tcp": [
        {
          "HostPort": "5000"
        }
      ]
    },
    "RestartPolicy": {
      "Name": "always"
    },
    "Mounts": [
        {
           "Target":   "/test",
           "Source":   "/",
           "Type":     "bind", 
           "ReadOnly": false
        }
     ]
  }
}'

在这个实验中,我尝试将主机的/加载到我的容器中的/test中。

奇怪的是,我发现MountSource既不是我的WSL也不是windows机器:

docker exec -it oraumum bash
# ls
bin   dev                  docker-entrypoint.sh  home  lib64  mnt  proc  run   srv  test  usr  volumes
boot  docker-entrypoint.d  etc                   lib   media  opt  root  sbin  sys  tmp   var
# cd /test
# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
# ls /home
# ls -al /home
total 8
drwxr-xr-x 2 root root 4096 Jun 13 10:30 .
drwxr-xr-x 1 root root 4096 Sep 12 13:46 ..
#

这里到底发生了什么?这与 hyper-V 或其他什么有关?

更新:我的 WSL2 的 home 不为空:

gofrendi@DESKTOP-MEO4ER4 [21:26:02] [/home]
-> % pwd
/home
gofrendi@DESKTOP-MEO4ER4 [21:26:07] [/home]
-> % ls -al
total 12
drwxr-xr-x  3 root     root     4096 Sep 10 08:17 .
drwxr-xr-x 19 root     root     4096 Sep 12 17:18 ..
drwxr-xr-x 24 gofrendi gofrendi 4096 Sep 12 21:26 gofrendi
gofrendi@DESKTOP-MEO4ER4 [21:26:12] [/home]

【问题讨论】:

  • 您正在将 WSL2 环境的根目录挂载到测试目录中,该目录有自己的主文件夹。你到底期待什么?
  • 我的 WSL 中的主目录应该包含一些内容。至少它应该包含我自己的主目录,但我看不到那里
  • /test/mnt下面是什么?
  • 没什么。目录为空

标签: docker wsl-2 docker-desktop


【解决方案1】:

在这里回答我自己的问题:实际发生了什么。

当您在 docker-desktop 中激活 WSL2 后端引擎时,它将创建 2 个不同的存储(并且可能还有 2 个不同的 VM)。

除了我的默认 WSL 虚拟机(Ubuntu 之一)之外,Docker-desktop 还创建了 docker-desktopdocker-desktop-data

挂载源可能位于docker-desktopdocker-desktop-data

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-04
    • 1970-01-01
    • 1970-01-01
    • 2019-09-21
    • 1970-01-01
    • 2019-08-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多