将 Docker 命令添加到我的 Docker 容器中

Adding Docker commands into my Docker container

我有一个问题,人们已经解决了,但还没有达到这个程度。

我正在制作一个 Docker Swarm 健康检查器,定期 post 检测我环境中 Docker 节点的健康状况。我正在 运行 解决如何从容器中 运行 我的 Docker 命令的问题。我找到了一个 post,你可以在其中 运行 这个命令:

docker run -it -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker image_name bash

它会像我想要的那样工作。问题是我想把它放在一个容器中,这个容器是来自堆栈中文件的运行。我已经尝试了所有的卷安装组合。这是我最近所做的,但仍然没有用。我是否错过了将 Docker 放入容器的明显步骤?

service_name:
  image: imaged_name
  volumes:
    - sock-docker:/var/run/docker.sock
    - bin-docker:/usr/bin/docker
  deploy:
    placement:
      constraints:
        - node.role == manager
    restart_policy:
      condition: any
      delay: 10s
      max_attempts: 50
      window: 600s
volumes:
  sock-docker:
    external:
      name: /var/run/docker.sock
  bin-docker:
    external:
      name: usr/bin/docker

一些想法:

  1. 我和你一样不懂挂载v /usr/bin/docker:/usr/bin/docker。它显然对你有用,但我的习惯是使用 https://hub.docker.com/_/docker/。我怀疑我的方法更好,但我真的不知道。无论如何,我不会对你问题的那个方面做进一步评论。
  2. 我认为您需要将 YAML 文件中的 - sock-docker:/var/run/docker.sock 替换为 - /var/run/docker.sock:/var/run/docker.sock。 YAML 文件中的顶级卷不是指卷挂载而不是绑定挂载吗? (我不知道。)
  3. swarm 建议我分发。节点 may/may 上的 Docker 套接字 运行 与服务于群的不同。您可以使用 ENV DOCKER_HOST=tcp://... 绕过此问题。 DOCKER_HOST 可以在另一台机器上。