无法将 docker.sock 绑定到 Docker 服务

Unable to bind docker.sock to Docker Service

我正在尝试设置 docker 服务(通过 terraform),它将 运行 jenkins 作为容器。我想将主机 VM 的 docker 摘要绑定到 docker 服务。我尝试了两种选择。

  1. Docker 服从命令
  2. 使用 terraform
  3. 生成 docker 服务

虽然服务成功实例化,但容器无法识别 docker 套接字。我可以在容器中看到 /var/run/docker.sock 文件,但 docker 命令不起作用。

代码块供您参考。

DOCKER 服务命令

docker service  create --name aws --mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock jenkins/jenkins:lts

TERRAFORM 主 TF 文件

resource "docker_service" "jenkins_service" {
  name = var.project_name
  task_spec {
    container_spec {
      image = docker_image.jenkins_image.name
      mounts {
        source = var.jenkins_volume
        target = "/var/jenkins_home"
        type   = "bind"
      }
      mounts {
        source = "/var/run/docker.sock"
        target = "/var/run/docker.sock"
        type   = "bind"
      }
    }
    networks = ["${docker_network.jenkins_network.name}"]
  }

  endpoint_spec {
    ports {
      target_port    = "8080"
      published_port = var.web_interface_port
      publish_mode   = "ingress"
      name           = "WEB_INTERFACE"
    }
    ports {
      target_port    = "50000"
      published_port = var.api_interface_port
      publish_mode   = "ingress"
      name           = "API_INTERFACE"
    }
  }
}

错误信息

bash-4.2$ docker exec -u 0 -it 9bc2a468174a bash
root@9bc2a468174a:/# docker
bash: docker: command not found
root@9bc2a468174a:/# ls -ltr /var/run/docker.sock
srwxrwxrwx. 1 root 167 0 Sep 24 11:02 /var/run/docker.sock

Docker版本

-bash-4.2$ docker version
Client:
Version: 18.09.8
API version: 1.39
Go version: go1.10.8
Git commit: 0dd43dd87f
Built: Wed Jul 17 17:40:31 2019
OS/Arch: linux/amd64
Experimental: false

Server: Docker Engine - Community
Engine:
Version: 18.09.8 API version: 1.39 (minimum version 1.12)
Go version: go1.10.8
Git commit: 0dd43dd
Built: Wed Jul 17 17:10:42 2019
OS/Arch: linux/amd64
Experimental: false

任何输入将不胜感激。

问候 Senthil Nathan M

bash: docker: command not found.

您的容器中没有安装 docker 客户端。从容器内的主机挂载 /var/run/docker.sock 只会让容器的 docker 客户端与主机的 docker 守护进程对话。您仍然需要在您的容器中至少安装 docker 客户端。