使用 Portainer 管理容器时, 需要设置 Endpoint URL, 也就是远程调用 Docker APIhost, 但默认 Docker 实例是不允许的, 如何解决?

# 创建目录
mkdir /etc/systemd/system/docker.service.d

# 创建文件 *.conf
vi /etc/systemd/system/docker.service.d/tcp.conf

# 添加以下内容
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2376

# 重新加载配置文件
sudo systemctl daemon-reload

# 重启 docker 实例
systemctl restart docker.service

# 以下两种方式可以检查是否配置成功
ps aux | grep docker
> root      3695  0.0  1.8 724008 74616 ?        Ssl  16:12   0:04 /usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2376

netstat -lnp | grep 2376
> tcp6       0      0 :::2376                 :::*                    LISTEN      3695/dockerd

则 Endpoint URL: $ip:2376

我没有使用 TLS, 如果需要可以参考: https://docs.docker.com/engine/security/https/

Mac 下开启docker API远程调用:

docker run -d -v /var/run/docker.sock:/var/run/docker.sock -p 2376:2375 bobrik/socat TCP4-LISTEN:2375,range=0.0.0.0/0,fork,reuseaddr UNIX-CONNECT:/var/run/docker.sock

Refer: