我正在尝试使仅在Unices上开发的Windows上的应用程序可以工作。所有这些都经过docker化,并使用traefik负载均衡器。用于运行traefik的docker的卷如下所示:
volumes: - /var/run/docker.sock:/var/run/docker.sock:ro,delegated - ${PWD}/load_balancer/traefik.toml:/etc/traefik/traefik.toml:ro,delegated
第一个卷在Mac或Linux上可以正常运行,但在Windows上可以吗?应用程序发生故障(负载均衡器给出了404),并且可能与该卷有关。当我启动映像时,套接字看起来像一个套接字:
/ # ls -laF /var/run/docker.sock srw-rw---- 1 root root 0 Sep 2 11:04 /var/run/docker.sock=
这管用吗?有什么测试方法吗?正确的做法是什么?
为了弄清楚这一点,我尝试将其替换为:
volumes: - //./pipe/docker_engine:/var/run/docker.sock
基于我在网上找到的各种文章和错误报告。泊坞窗映像启动,但以相同的方式失败,现在在泊坞窗容器中,它看起来像一个目录:
/ # ls -laF /var/run/docker.sock total 4 drwxr-xr-x 2 root root 40 Sep 3 14:52 ./ drwxr-xr-x 1 root root 4096 Sep 3 14:57 ../
按照Marc ABOUCHACRA的回答,我尝试了:
volumes: - type: npipe source: ////./pipe/docker_engine target: /var/run/docker.sock consistency: delegated
但这也看起来像一个目录:
/ # ls -laF /var/run/docker.sock total 4 drwxr-xr-x 2 root root 40 Sep 3 14:52 ./ drwxr-xr-x 1 root root 4096 Sep 3 14:57 ../
我也试过这个:
volumes: - npipe:////./pipe/docker_engine:/var/run/docker.sock:ro,delegated
但这失败,并显示以下错误:
ERROR: Volume npipe:////./pipe/docker_engine:/var/run/docker.sock:ro,delegated has incorrect format, should be external:internal[:mode]
整个docker-compose.yml
部分如下所示:
lb: image: load-balancer build: ${WORKSPACE}/go-home/load_balancer ports: - 80:80 - 443:443 links: - wifi-ui-dev - wifi-ui-prod - portal - wifi-api env_file: - .env volumes: - /var/run/docker.sock:/var/run/docker.sock:ro,delegated - ${PWD}/load_balancer/traefik.toml:/etc/traefik/traefik.toml:ro,delegated
我的问题特别是关于在Windows主机上运行此Docker映像(这是Linux)并运行Docker for Windows。我知道可以通过在另一台计算机上安装Linux或在Windows计算机上安装VM来在Linux主机上运行它。如果有一种方法可以只将套接字从Windows公开到Windows,那么我也不希望运行Windows guest。