penglongli / blog

18 stars 1 forks source link

Docker 在 Mac 下的 2375 端口问题 #68

Open penglongli opened 6 years ago

penglongli commented 6 years ago

处于安全原因,Docker Mac 客户端并没有开启 2375 端口的配置,所以我们可以用 socat 来 fork 一个端口出来,详情见:

https://github.com/docker/for-mac/issues/770

使用如下命令创建:

docker run -it -d --name=socat \
  -p 2375:2375 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  bobrik/socat \
  TCP4-LISTEN:2375,fork,reuseaddr UNIX-CONNECT:/var/run/docker.sock

然后我们可以通过如下两个办法验证:

$ sudo lsof -i:2375

或者:

$ docker -H tcp://localhost:2375 ps

为什么要开启 2375 端口?一般来说我们是用这个端口通过 Daemon 与 Docker 通信,常见于调用 Docker Rmote API

yingzhuo commented 5 years ago

问题解决了, 用docker-compose相对来说方便一点。

docker-compose.yml内容如下:

version: "3.5"

services:
  redis:
    image: "alpine/socat"
    container_name: socat
    restart: "always"
    volumes:
    - "/var/run/docker.sock:/var/run/docker.sock"
    ports:
    - "2375:2375"
    command: "tcp-listen:2375,fork,reuseaddr unix-connect:/var/run/docker.sock"

networks:
  default:
    external:
      name: my_network