невозможно связать :: :: ipv6 loopback в докере - PullRequest
0 голосов
/ 01 мая 2018

Когда я пытаюсь выполнить привязку по петле IPv6 ::1:

import asyncio

async def handle_echo(reader, writer):
    data = await reader.read(100)
    writer.write(data)
    await writer.drain()
    writer.close()

loop = asyncio.get_event_loop()
server = loop.run_until_complete(asyncio.start_server(handle_echo, '::1', 8888))
loop.run_forever()

У меня есть исключение:

Traceback (most recent call last):
  File "/home/dev/lib/aioimaplib/aioimaplib/tests/echo.py", line 10, in <module>
    server = loop.run_until_complete(asyncio.start_server(handle_echo, '::1', 8888))
  File "/usr/lib/python3.5/asyncio/base_events.py", line 387, in run_until_complete
    return future.result()
  File "/usr/lib/python3.5/asyncio/futures.py", line 274, in result
raise self._exception
  File "/usr/lib/python3.5/asyncio/tasks.py", line 239, in _step
result = coro.send(None)
  File "/usr/lib/python3.5/asyncio/streams.py", line 113, in start_server
return (yield from loop.create_server(factory, host, port, **kwds))
  File "/usr/lib/python3.5/asyncio/base_events.py", line 962, in create_server
    % (sa, err.strerror.lower()))
OSError: [Errno 99] error while attempting to bind on address ('::1', 8888): cannot assign requested address

Когда я пытаюсь с 127.0.0.1, он работает нормально.

Я не понимаю, почему. Может кто-нибудь объяснить мне это?


РЕДАКТИРОВАТЬ : Этот код выполняется в Docker-контейнере Ubuntu 16.04.3. Когда я запускаю этот код вне контейнера (также Ubuntu 16.04), он отлично работает

Сетевая конфигурация Docker для контейнера:

    "NetworkSettings": {
        "Bridge": "",
        "SandboxID": "08db0a10027a93a19ecab7076875c5f80eadc06e2c762d6408a71bac9b9bb19c",
        "HairpinMode": false,
        "LinkLocalIPv6Address": "",
        "LinkLocalIPv6PrefixLen": 0,
        "Ports": {},
        "SandboxKey": "/var/run/docker/netns/08db0a10027a",
        "SecondaryIPAddresses": null,
        "SecondaryIPv6Addresses": null,
        "EndpointID": "",
        "Gateway": "",
        "GlobalIPv6Address": "",
        "GlobalIPv6PrefixLen": 0,
        "IPAddress": "",
        "IPPrefixLen": 0,
        "IPv6Gateway": "",
        "MacAddress": "",
        "Networks": {
            "docker_default": {
                "IPAMConfig": null,
                "Links": [
                    "docker_nginx_1:classe",
                    "docker_nginx_1:docker_nginx_1",
                    "docker_nginx_1:nginx_1"
                ],
                "Aliases": [
                    "dev",
                    "f8fb90cb475d"
                ],
                "NetworkID": "a3796e2081ed441603d19997515405d890b6f17f93bb76f9c0c91841fb3208c3",
                "EndpointID": "f7ecf3f1678f65f8fc47157b8a852c1744296a2cc6ab827a1e998ae1f9fdee88",
                "Gateway": "172.18.0.1",
                "IPAddress": "172.18.0.8",
                "IPPrefixLen": 16,
                "IPv6Gateway": "",
                "GlobalIPv6Address": "",
                "GlobalIPv6PrefixLen": 0,
                "MacAddress": "02:42:ac:12:00:08",
                "DriverOpts": null
            }
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...