要在 Ubuntu 下让局域网用户能够访问
/var/run/docker.sock
,你可以通过将 Docker 的 Unix 套接字转发到 TCP 端口,从而允许局域网内的设备通过 TCP 连接访问 Docker。以下是实现这一目标的步骤:
安装socat
sudo apt-get update
sudo apt-get install socat
使用 socat
转发 Unix 套接字到 TCP 端口
使用 socat
将 Docker 的 Unix 套接字 /var/run/docker.sock
转发到一个 TCP 端口(例如 2375)。运行以下命令:
sudo socat TCP-LISTEN:2375,reuseaddr,fork UNIX-CONNECT:/var/run/docker.sock
这将使 Docker 的 Unix 套接字在 2375 端口上监听 TCP 连接。
创建system服务
sudo nano /etc/systemd/system/docker-socket-proxy.service
添加以下内容
[Unit]
Description=Docker Socket Proxy
After=network.target
[Service]
ExecStart=/usr/bin/socat TCP-LISTEN:2375,reuseaddr,fork UNIX-CONNECT:/var/run/docker.sock
Restart=always
[Install]
WantedBy=multi-user.target
重新加载并重启服务
sudo systemctl daemon-reload
sudo systemctl start docker-socket-proxy
sudo systemctl enable docker-socket-proxy
测试结果
docker -H tcp://<server-ip>:2375 info