Настройка сокета демона Docker - PullRequest
0 голосов
/ 06 сентября 2018

я не смог найти ответ в Интернете, поэтому мой вопрос: почему 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, два хоста могут нормально общаться.

Конечно, может быть и другая причина моей проблемы, но сейчас я бы хотел исключить эту возможность. у кого-нибудь есть идеи?

1 Ответ

0 голосов
/ 06 сентября 2018

не думайте, что это проблема Docker. Если вы авторизуете всех пользователей без каких-либо ограничений или только для порта, он будет отображаться как открытый порт ipv6, но он все еще доступен для ipv4.

Это означает только открытие без ограничений по номеру порта ... Ответ здесь гораздо яснее, чем мой: https://unix.stackexchange.com/questions/152612/netstat-why-are-ipv4-daemons-listening-to-ports-listed-only-in-a-inet6

...