я не смог найти ответ в Интернете, поэтому мой вопрос: почему Docker демон открывает только сокет IPv6? как заставить его использовать сокет с двумя стеками или только для IPv4?
# docker version
:
Client:
Version: 17.06.2-ol
API version: 1.30
Go version: go1.8.3
Git commit: d02b7ab
Built: Fri Oct 6 00:02:23 2017
OS/Arch: linux/amd64
Server:
Version: 17.06.2-ol
API version: 1.30 (minimum version 1.12)
Go version: go1.8.3
Git commit: d02b7ab
Built: Fri Oct 6 00:03:48 2017
OS/Arch: linux/amd64
Experimental: false
файл /etc/sysconfig/docker-network
(это система Oracle Linux):
DOCKER_NETWORK_OPTIONS=-H unix:///var/run/docker.sock -H tcp://0.0.0.0:2376
# sysctl net.ipv6.bindv6only
:
net.ipv6.bindv6only = 0
Я пытался установить --ipv6=false
или вообще отключить IPv6 для всей системы. Тем не менее, как показывают ss
или netstat
, Docker открывает только сокет IPv6:
LISTEN 0 128 :::2376 :::* users:(("dockerd",pid=2677,fd=6))
на хосте не прослушивается соответствующий сокет IPv4 или сопоставленный IPv4 IPv6.
Вызовы клиента Docker с другого хоста, использующего адрес IPv4, не получат никакого ответа от сервера, tcpdump
указало, что демон просто не отвечает на них. если я открою сокет IPv4 с помощью nc
, два хоста могут нормально общаться.
Конечно, может быть и другая причина моей проблемы, но сейчас я бы хотел исключить эту возможность. у кого-нибудь есть идеи?