【问题标题】:Traefik container has no mount on docker inspectTraefik 容器在 docker inspect 上没有挂载
【发布时间】:2021-05-28 08:39:13
【问题描述】:

我有一个错误,仅当我在我的一个 docker compose 文件而不是另一个上运行 docker compose up 时发生,即使发生错误的名为“代理”的服务是相同的。

当我运行 docker compose -f docker-compose-v1.yml up -d 时,容器启动时没有问题,但检查时名为 github_proxy_1 的容器没有挂载

如果我运行docker-compose -f docker-compose-v2.yml up -d,容器启动时不会出现问题,并且在检查时名为 github_proxy_1 的容器已挂载

代理服务基于 traefik windows 图像。我读过很多人在绑定卷方面遇到问题,以便 traefik 可以与底层主机通信,但奇怪的是它在一种设置中完美地工作,但在另一种设置中却没有。

以下是我的 docker 版本信息、docker compose 文件、检查容器时的结果(显示挂载的差异)以及 Docker Desktop 中显示的容器日志中的错误消息。

为什么一个代理容器能够填充挂载,而另一个却没有?

提前致谢!

码头工人版本

Client:
 Cloud integration: 1.0.14
 Version:           20.10.6
 API version:       1.41
 Go version:        go1.16.3
 Git commit:        370c289
 Built:             Fri Apr  9 22:49:36 2021   
 OS/Arch:           windows/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.6
  API version:      1.41 (minimum version 1.24)
  Go version:       go1.13.15
  Git commit:       8728dd2
  Built:            Fri Apr  9 22:45:40 2021   
  OS/Arch:          windows/amd64
  Experimental:     false

docker-compose-v1.yml

version: "3.7"

services:
  s4-web:
    image: s4admin:484-2
    build:
      context: .
      dockerfile: S4/Admin/Dockerfile
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.web.rule=PathPrefix(`/`)"
    networks:
      - sg-net

  proxy:
    image: traefik:v2.3-windowsservercore-1809
    command:
      - "--providers.docker"
      - "--providers.docker.endpoint=npipe:////./pipe/docker_engine"
      - "--providers.docker.exposedbydefault=false"
      - "--providers.docker.network=sg-net"
      - "--entrypoints.web.address=:80"
      - "--api.insecure=true"
    ports:
      - "8080:80"
      - "8088:8080"
    volumes:
      - type: npipe
        source: \\.\pipe\docker_engine
        target: \\.\pipe\docker_engine
    networks:
      - sg-net

networks:
  sg-net:

docker-compose-v2.yml

version: "3.7"

services:
  signup-web:
    image: signup-web:02-06
    build:
      context: ../..
      dockerfile: docker/02-06-platform-integration/signup-web/v6/Dockerfile
    environment:
      - Dependencies:IReferenceDataLoader=SignUp.Web.ReferenceData.ApiReferenceDataLoader
      - ReferenceDataApi:Url=http://reference-data-api/api
      - Dependencies:IProspectSaveHandler=SignUp.Web.ProspectSave.AsynchronousProspectSaveHandler
      - MessageQueue:Url=nats://${HOST_IP}:4222
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.web.rule=PathPrefix(`/`)"
    networks:
      - signup-net

  proxy:
    image: traefik:v2.3-windowsservercore-1809
    command:
      - "--providers.docker"
      - "--providers.docker.endpoint=npipe:////./pipe/docker_engine"
      - "--providers.docker.exposedbydefault=false"
      - "--providers.docker.network=signup-net"
      - "--entrypoints.web.address=:80"
      - "--api.insecure=true"
    ports:
      - "8080:80"
      - "8088:8080"
    volumes:
      - type: npipe
        source: \\.\pipe\docker_engine
        target: \\.\pipe\docker_engine
    networks:
      - signup-net

networks:
  signup-net:

docker inspect github_proxy_1 的结果显示没有挂载:

[
    {
        "Id": "507bb53f9f7c772221ef858464877d310c4ab48a100f86e49b5e248de67c5921",
        "Created": "2021-05-28T07:49:16.3839919Z",
        "Path": "/traefik",
        "Args": [
            "--providers.docker",
            "--providers.docker.endpoint=npipe:////./pipe/docker_engine",    
            "--providers.docker.exposedbydefault=false",
            "--providers.docker.network=sg-net",
            "--entrypoints.web.address=:80",
            "--api.insecure=true"
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 1312,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2021-05-28T07:49:22.9474168Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
        "Image": "sha256:0011bc7c1cd89741d499d69fe62ed8c50b251d90bb3dd01350d6f945dace6e89",
        "ResolvConfPath": "",
        "HostnamePath": "",
        "HostsPath": "",
        "LogPath": "C:\\ProgramData\\Docker\\containers\\507bb53f9f7c772221ef858464877d310c4ab48a100f86e49b5e248de67c5921\\507bb53f9f7c772221ef858464877d310c4ab48a100f86e49b5e248de67c5921-json.log",
        "Name": "/github_proxy_1",
        "RestartCount": 0,
        "Driver": "windowsfilter",
        "Platform": "windows",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "",
        "ExecIDs": null,
        "HostConfig": {
            "Binds": [],
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "json-file",
                "Config": {}
            },
            "NetworkMode": "github_sg-net",
            "PortBindings": {
                "80/tcp": [
                    {
                        "HostIp": "",
                        "HostPort": "8080"
                    }
                ],
                "8080/tcp": [
                    {
                        "HostIp": "",
                        "HostPort": "8088"
                    }
                ]
            },
            "RestartPolicy": {
                "Name": "",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": [],
            "CapAdd": null,
            "CapDrop": null,
            "CgroupnsMode": "",
            "Dns": null,
            "DnsOptions": null,
            "DnsSearch": null,
            "ExtraHosts": null,
            "GroupAdd": null,
            "IpcMode": "",
            "Cgroup": "",
            "Links": null,
            "OomScoreAdj": 0,
            "PidMode": "",
            "Privileged": false,
            "PublishAllPorts": false,
            "ReadonlyRootfs": false,
            "SecurityOpt": null,
            "UTSMode": "",
            "UsernsMode": "",
            "ShmSize": 0,
            "ConsoleSize": [
                0,
                0
            ],
            "Isolation": "hyperv",
            "CpuShares": 0,
            "Memory": 0,
            "NanoCpus": 0,
            "CgroupParent": "",
            "BlkioWeight": 0,
            "BlkioWeightDevice": null,
            "BlkioDeviceReadBps": null,
            "BlkioDeviceWriteBps": null,
            "BlkioDeviceReadIOps": null,
            "BlkioDeviceWriteIOps": null,
            "CpuPeriod": 0,
            "CpuQuota": 0,
            "CpuRealtimePeriod": 0,
            "CpuRealtimeRuntime": 0,
            "CpusetCpus": "",
            "CpusetMems": "",
            "Devices": null,
            "DeviceCgroupRules": null,
            "DeviceRequests": null,
            "KernelMemory": 0,
            "KernelMemoryTCP": 0,
            "MemoryReservation": 0,
            "MemorySwap": 0,
            "MemorySwappiness": null,
            "OomKillDisable": null,
            "PidsLimit": null,
            "Ulimits": null,
            "CpuCount": 0,
            "CpuPercent": 0,
            "IOMaximumIOps": 0,
            "IOMaximumBandwidth": 0,
            "MaskedPaths": null,
            "ReadonlyPaths": null
        },
        "GraphDriver": {
            "Data": {
                "dir": "C:\\ProgramData\\Docker\\windowsfilter\\507bb53f9f7c772221ef858464877d310c4ab48a100f86e49b5e248de67c5921"
            },
            "Name": "windowsfilter"
        },
        "Mounts": [],
        "Config": {
            "Hostname": "507bb53f9f7c",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": true,
            "AttachStderr": true,
            "ExposedPorts": {
                "80/tcp": {},
                "8080/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": null,
            "Cmd": [
                "--providers.docker",
                "--providers.docker.endpoint=npipe:////./pipe/docker_engine",                "--providers.docker.exposedbydefault=false",
                "--providers.docker.network=sg-net",
                "--entrypoints.web.address=:80",
                "--api.insecure=true"
            ],
            "Image": "sha256:0011bc7c1cd89741d499d69fe62ed8c50b251d90bb3dd01350d6f945dace6e89",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": [
                "/traefik"
            ],
            "OnBuild": null,
            "Labels": {
                "com.docker.compose.config-hash": "ef67d49c829762590f72bf6caa8e34327f9b86915e9e985c9d2fa43177457894",
                "com.docker.compose.container-number": "1",
                "com.docker.compose.oneoff": "False",
                "com.docker.compose.project": "github",
                "com.docker.compose.project.config_files": "C:\\Dev\\Projects\\SurveyGenerator\\github\\docker-compose-s4.yml",
                "com.docker.compose.project.working_dir": "C:\\Dev\\Projects\\SurveyGenerator\\github",
                "com.docker.compose.service": "proxy",
                "com.docker.compose.version": "1.0-alpha",
                "org.opencontainers.image.description": "A modern reverse-proxy",
                "org.opencontainers.image.documentation": "https://docs.traefik.io",
                "org.opencontainers.image.title": "Traefik",
                "org.opencontainers.image.url": "https://traefik.io",        
                "org.opencontainers.image.vendor": "Traefik Labs",
                "org.opencontainers.image.version": "v2.3.7"
            }
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "507bb53f9f7c772221ef858464877d310c4ab48a100f86e49b5e248de67c5921",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {
                "80/tcp": [
                    {
                        "HostIp": "0.0.0.0",
                        "HostPort": "8080"
                    }
                ],
                "8080/tcp": [
                    {
                        "HostIp": "0.0.0.0",
                        "HostPort": "8088"
                    }
                ]
            },
            "SandboxKey": "507bb53f9f7c772221ef858464877d310c4ab48a100f86e49b5e248de67c5921",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "",
            "Gateway": "",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "",
            "IPPrefixLen": 0,
            "IPv6Gateway": "",
            "MacAddress": "",
            "Networks": {
                "github_sg-net": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": [
                        "proxy",
                        "github_proxy_1",
                        "507bb53f9f7c"
                    ],
                    "NetworkID": "2e5931b8cba8fdd1b2b4e547089c21b85570450437599d13e8af3888263d22e3",
                    "EndpointID": "87d39c2b7cc69b3090026f8395312704e684d7fb925410895dca1a007473ee41",
                    "Gateway": "172.27.160.1",
                    "IPAddress": "172.27.163.11",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "00:15:5d:46:69:3c",
                    "DriverOpts": null
                }
            }
        }
    }
]

来自 docker inspect github_proxy_1 的结果,其中 mounts 具有值:

[
    {
        "Id": "a81aae03a323b5efd37f80656dccab0bd102aa903d34803554456f0661c22c99",
        "Created": "2021-05-28T08:21:05.6675713Z",
        "Path": "/traefik",
        "Args": [
            "--providers.docker",
            "--providers.docker.endpoint=npipe:////./pipe/docker_engine",
            "--providers.docker.exposedbydefault=false",
            "--providers.docker.network=signup-net",
            "--entrypoints.web.address=:80",
            "--api.insecure=true"
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 1328,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2021-05-28T08:21:10.4771044Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
        "Image": "sha256:0011bc7c1cd89741d499d69fe62ed8c50b251d90bb3dd01350d6f945dace6e89",
        "ResolvConfPath": "",
        "HostnamePath": "",
        "HostsPath": "",
        "LogPath": "C:\\ProgramData\\Docker\\containers\\a81aae03a323b5efd37f80656dccab0bd102aa903d34803554456f0661c22c99\\a81aae03a323b5efd37f80656dccab0bd102aa903d34803554456f0661c22c99-json.log",
        "Name": "/03_proxy_1",
        "RestartCount": 0,
        "Driver": "windowsfilter",
        "Platform": "windows",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "",
        "ExecIDs": null,
        "HostConfig": {
            "Binds": [],
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "json-file",
                "Config": {}
            },
            "NetworkMode": "03_signup-net",
            "PortBindings": {
                "80/tcp": [
                    {
                        "HostIp": "",
                        "HostPort": "8080"
                    }
                ],
                "8080/tcp": [
                    {
                        "HostIp": "",
                        "HostPort": "8088"
                    }
                ]
            },
            "RestartPolicy": {
                "Name": "",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": [],
            "CapAdd": null,
            "CapDrop": null,
            "CgroupnsMode": "",
            "Dns": null,
            "DnsOptions": null,
            "DnsSearch": null,
            "ExtraHosts": null,
            "GroupAdd": null,
            "IpcMode": "",
            "Cgroup": "",
            "Links": null,
            "OomScoreAdj": 0,
            "PidMode": "",
            "Privileged": false,
            "PublishAllPorts": false,
            "ReadonlyRootfs": false,
            "SecurityOpt": null,
            "UTSMode": "",
            "UsernsMode": "",
            "ShmSize": 0,
            "ConsoleSize": [
                0,
                0
            ],
            "Isolation": "hyperv",
            "CpuShares": 0,
            "Memory": 0,
            "NanoCpus": 0,
            "CgroupParent": "",
            "BlkioWeight": 0,
            "BlkioWeightDevice": null,
            "BlkioDeviceReadBps": null,
            "BlkioDeviceWriteBps": null,
            "BlkioDeviceReadIOps": null,
            "BlkioDeviceWriteIOps": null,
            "CpuPeriod": 0,
            "CpuQuota": 0,
            "CpuRealtimePeriod": 0,
            "CpuRealtimeRuntime": 0,
            "CpusetCpus": "",
            "CpusetMems": "",
            "Devices": null,
            "DeviceCgroupRules": null,
            "DeviceRequests": null,
            "KernelMemory": 0,
            "KernelMemoryTCP": 0,
            "MemoryReservation": 0,
            "MemorySwap": 0,
            "MemorySwappiness": null,
            "OomKillDisable": null,
            "PidsLimit": null,
            "Ulimits": null,
            "CpuCount": 0,
            "CpuPercent": 0,
            "IOMaximumIOps": 0,
            "IOMaximumBandwidth": 0,
            "Mounts": [
                {
                    "Type": "npipe",
                    "Source": "\\\\.\\pipe\\docker_engine",
                    "Target": "\\\\.\\pipe\\docker_engine"
                }
            ],
            "MaskedPaths": null,
            "ReadonlyPaths": null
        },
        "GraphDriver": {
            "Data": {
                "dir": "C:\\ProgramData\\Docker\\windowsfilter\\a81aae03a323b5efd37f80656dccab0bd102aa903d34803554456f0661c22c99"
            },
            "Name": "windowsfilter"
        },
        "Mounts": [
            {
                "Type": "npipe",
                "Source": "\\\\.\\pipe\\docker_engine",
                "Destination": "\\\\.\\pipe\\docker_engine",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            }
        ],
        "Config": {
            "Hostname": "a81aae03a323",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "80/tcp": {},
                "8080/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": null,
            "Cmd": [
                "--providers.docker",
                "--providers.docker.endpoint=npipe:////./pipe/docker_engine",
                "--providers.docker.exposedbydefault=false",
                "--providers.docker.network=signup-net",
                "--entrypoints.web.address=:80",
                "--api.insecure=true"
            ],
            "Image": "traefik:v2.3-windowsservercore-1809",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": [
                "/traefik"
            ],
            "OnBuild": null,
            "Labels": {
                "com.docker.compose.config-hash": "53f350716aad96821fea12154c09bf70e538394230171e0139d28b0ea8b6a2c6",
                "com.docker.compose.container-number": "1",
                "com.docker.compose.oneoff": "False",
                "com.docker.compose.project": "03",
                "com.docker.compose.project.config_files": "app\\03\\v7-windows.yml",
                "com.docker.compose.project.working_dir": "C:\\Dev\\Projects\\docker4dotnet\\app\\03",
                "com.docker.compose.service": "proxy",
                "com.docker.compose.version": "1.29.1",
                "org.opencontainers.image.description": "A modern reverse-proxy",
                "org.opencontainers.image.documentation": "https://docs.traefik.io",
                "org.opencontainers.image.title": "Traefik",
                "org.opencontainers.image.url": "https://traefik.io", 
                "org.opencontainers.image.vendor": "Traefik Labs",    
                "org.opencontainers.image.version": "v2.3.7"
            }
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "a81aae03a323b5efd37f80656dccab0bd102aa903d34803554456f0661c22c99",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {
                "80/tcp": [
                    {
                        "HostIp": "0.0.0.0",
                        "HostPort": "8080"
                    }
                ],
                "8080/tcp": [
                    {
                        "HostIp": "0.0.0.0",
                        "HostPort": "8088"
                    }
                ]
            },
            "SandboxKey": "a81aae03a323b5efd37f80656dccab0bd102aa903d34803554456f0661c22c99",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "",
            "Gateway": "",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "",
            "IPPrefixLen": 0,
            "IPv6Gateway": "",
            "MacAddress": "",
            "Networks": {
                "03_signup-net": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": [
                        "a81aae03a323",
                        "proxy"
                    ],
                    "NetworkID": "1a464d92f0625acd600391c7b2204d33e54cb94b1bf4a098ca0a48e5f4067edc",
                    "EndpointID": "fde1dace014a898a4cee3fb624ce1a1ec74f87a565b3cb4696e895037774e57d",
                    "Gateway": "172.29.0.1",
                    "IPAddress": "172.29.12.143",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "00:15:5d:2f:e3:79",
                    "DriverOpts": null
                }
            }
        }
    }
]

在没有挂载的 github_proxy_1 容器的 docker 桌面中记录错误消息:

time="2021-05-28T09:49:25+02:00" level=error msg="Failed to retrieve information of the docker client and server host: error during connect: This error may indicate that the docker daemon is not running.: Get \"http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.24/version\": open //./pipe/docker_engine: The system cannot find the file specified." providerName=docker

time="2021-05-28T09:49:25+02:00" level=error msg="Provider connection error error during connect: This error may indicate that the docker daemon is not running.: Get \"http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.24/version\": open //./pipe/docker_engine: The system cannot find the file specified., retrying in 552.330144ms" providerName=docker

【问题讨论】:

    标签: docker docker-compose reverse-proxy traefik windows-container


    【解决方案1】:

    所以我发现了问题。我使用 docker-compose(使用 docker-compose 二进制文件)来编写有效的组合,而 docker compose 则用于无效的组合。

    问题仍然是为什么一个有效而另一个无效,运行docker-composedocker compose 有什么区别?它可能与权限有关吗?

    【讨论】:

      最近更新 更多