Skip to content

Enable Docker Tcp Connection

Systemd

shell
sudo vi /lib/systemd/system/docker.service
shell
sudo vi /etc/systemd/system/docker.service.d/override.conf
shell
systemctl edit docker

Configure TCP Listening

Add TCP listening to the original startup parameters:

js
[Service]
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecStart=
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H fd:// --containerd=/run/containerd/containerd.sock

Configure TCP TLS Listening

DANGER

When in a public network environment, enabling TCP connection must enable TLS.

Generate Certificate

shell
curl -sSL https://dpanel.cc/quick.sh -o quick.sh && bash quick.sh
shell
https://docs.docker.com/engine/security/protect-access/

Certificate Files

NameDescription
ca.pemUpload certificate when enabling TLS for adding multi-server
cert.pem--
key.pem--
ca.pemCertificate associated when Docker configures TLS
server-cert.pem--
server-key.pem--

Modify Docker Startup Parameters

js
[Service]
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecStart=
ExecStart=/usr/bin/dockerd --tlsverify --tlscacert=/root/docker-ca/ca.pem --tlscert=/root/docker-ca/server-cert.pem --tlskey=/root/docker-ca/server-key.pem -H tcp://0.0.0.0:2376 -H fd:// --containerd=/run/containerd/containerd.sock

Reload Configuration & Restart Service

shell
sudo sh -c "systemctl daemon-reload && systemctl restart docker"

Windows Docker Desktop

Enable TCP connection through Setting -> General -> Expose daemon on tcp://localhost:2375 without TLS.