docker - 将 Docker 命令添加到我的 Docker 容器中
问题描述
我有一个人们已经讨论过的问题,但没有到这个程度。
我正在制作一个 Docker Swarm 健康检查器,它会定期发布我环境中 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
解决方案
一些想法:
- 我不知道
v /usr/bin/docker:/usr/bin/docker
像你一样安装。它显然对你有用,但我的习惯是使用https://hub.docker.com/_/docker/
. 我怀疑我的方法更好,但我真的不知道。无论如何,我不会对你问题的这方面做进一步评论。 - 我认为您需要在 YAML 文件中替换
- sock-docker:/var/run/docker.sock
为。- /var/run/docker.sock:/var/run/docker.sock
YAML 文件中的顶级卷不是指卷挂载而不是绑定挂载吗?(我不知道。) - swarm 建议我分发。在节点上运行的 Docker 套接字可能/可能与为 swarm 服务的 Docker 套接字相同。您可以使用
ENV DOCKER_HOST=tcp://...
. DOCKER_HOST 可以在另一台机器上。
推荐阅读
- keras - ValueError:检查输入时出错:预期的 dense_1_input 有 2 个维度
- openldap - 如何在 python-ldap 中加密(MD5)密码?
- python - 编写全局配置文件的正确方法是什么?
- c# - 如何修复报告 RDLC 在没有 Visual Studio 的情况下无法在 IIS 上运行?
- mongodb - Studio 3T 工具:避免在每次查询运行时出现新的控制台输出选项卡
- java - 在数组中找到不重复的对,加起来等于给定的总和
- linux - 在 Windows 和 Linux 上的 Dockerfile 中使用 RUN 命令
- rust - 从宏规则返回值!在锈
- python-docx - python-docx:document.tables 中缺少表
- git - 从 github-plugin 完全重命名提交状态的默认上下文