ubuntu 上的 Docker Unix 套接字与 alpine 之间有什么区别?

What is the difference between Docker Unix socket on ubuntu vs alpine?

我 运行 遇到无法将 Unix docker 套接字 挂载到 alpine 容器[=33] 的问题=] 但适用于 ubuntu 容器.

docker-使用alpine图像合成

version: '3.8'

services:
  cluster:
    image:  alpine  
    tty: true  
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
      - "/usr/bin/docker:/usr/bin/docker"      

运行 docker alpine 容器中的命令:

/ # docker --version
sh: docker: not found

docker-使用ubuntu图像合成

version: '3.8'

services:
  cluster:
    image:  ubuntu:20.04
    tty: true  
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
      - "/usr/bin/docker:/usr/bin/docker"      

运行 docker 命令在 ubuntu 容器中:

root@5f30b4143c43:/# docker --version
Docker version 20.10.12, build e91ed57

我不明白为什么我可以使用 ubuntu 容器而不是高山容器访问我的主机 docker env?配置中是否缺少任何内容?

您的错误与套接字无关:

/ # docker --version
sh: docker: not found

您看到这个是因为您正在尝试 运行 为 glibc 平台编译的二进制文件,而 Alpine 是使用 MUSL libc.

构建的

您需要安装专为在 Alpine 下使用而构建的 docker 客户端版本(或者选择几乎任何其他图像)。