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

时间:2018-06-11 18:55:54

标签: docker docker-compose docker-stack

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

我正在制作一个Docker Swarm Health检查程序,它定期发布我环境中Docker节点的运行状况。我遇到了如何从容器中运行我的Docker命令的问题。我发现了一个可以运行此命令的帖子:

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 个答案:

答案 0 :(得分:2)

一些想法:

  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建议我分发。在节点上运行的Docker套接字可能与服务于swarm的套接字套接字相同。您可以使用ENV DOCKER_HOST=tcp://...绕过此问题。 DOCKER_HOST可以在另一台机器上。
相关问题