Estou lendo as configurações do systemd para o Docker no CoreOS tentando descobrir como a porta TCP do Docker (porta 2375) é ativada. Quando vejo o arquivo de configuração docker.service, recebo a impressão de que o Docker está apenas ouvindo em um descritor de arquivo ( --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
No entanto, quando verifico as portas de escuta por meio de netstat
, vejo o seguinte:
# 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
Então eu cavei um pouco mais e encontrei um arquivo de configuração do soquete systemd para o 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
Isso parece ser o que fornece o serviço de escuta na porta 2375 (a porta Docker padrão), porque quando eu o paro (usando systemctl stop docker-tcp.socket
) e reinicio o serviço Docker (usando systemctl restart docker.service
), a porta 2375 não é mais mostrada em netstat
.
Então, a minha pergunta é esta: o docker-tcp.socket
config realmente habilita a interface TCP local como --host
para o Docker, ou o Docker por padrão escuta na interface TCP local quando fd://
é especificado? aa --host
opção, ou o docker-tcp.socket
config de alguma forma está configurando um mapeamento de 0.0.0.0:2375
para /var/run/docker.sock
no nível do SO?