Когда я пытаюсь выполнить привязку по петле 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
}
}
}