Я читаю настройки systemd для Docker на CoreOS, пытаясь выяснить, как включается TCP-порт для Docker (порт 2375). Когда я смотрю на файл конфигурации docker.service, у меня складывается впечатление, что Docker прослушивает только дескриптор файла (--host=fd://
).
# /usr/lib64/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=http://docs.docker.io
Requires=docker.socket
After=docker.socket
[Service]
Environment="TMPDIR=/var/tmp/"
ExecStartPre=/bin/mount --make-rprivate /
Environment=DOCKER_OPTS='--insecure-registry="0.0.0.0/0"'
LimitNOFILE=1048576
LimitNPROC=1048576
# Run docker but don't have docker automatically restart
# containers. This is a job for systemd and unit files.
ExecStart=/usr/bin/docker --daemon --storage-driver=btrfs --host=fd:// $DOCKER_OPTS
[Install]
WantedBy=multi-user.target
Однако, когда я проверяю порты прослушивания через netstat
, я вижу следующее:
# sudo netstat -apn
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp6 0 0 :::2375 :::* LISTEN 1/systemd
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node PID/Program name Path
unix 2 [ ACC ] STREAM LISTENING 1841 1/systemd /var/run/docker.sock
Поэтому я покопался немного глубже и нашел файл конфигурации systemd socket для Docker:
# /etc/systemd/system/docker-tcp.socket
[Unit]
Description=Docker Socket for the API
[Socket]
ListenStream=2375
Service=docker.service
BindIPv6Only=both
[Install]
WantedBy=sockets.target
Похоже, это то, что обеспечивает службу прослушивания на порту 2375 (порт Docker по умолчанию), потому что, когда я его останавливаю (используя systemctl stop docker-tcp.socket
) и перезапускаю службу Docker (используя systemctl restart docker.service
), порт 2375 больше не появляется в netstat
.
Итак, мой вопрос заключается в следующем ... действительно ли конфигурация docker-tcp.socket
включает локальный интерфейс TCP в качестве опции --host
для Docker, или Docker по умолчанию прослушивает локальный интерфейс TCP, когда указано fd://
опция --host
, или конфигурация docker-tcp.socket
каким-то образом настраивает сопоставление от 0.0.0.0:2375
до /var/run/docker.sock
на уровне операционной системы?