Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker与Docker 1.12“组合;“群集模式”;_Docker_Docker Compose_Docker Swarm - Fatal编程技术网

Docker与Docker 1.12“组合;“群集模式”;

Docker与Docker 1.12“组合;“群集模式”;,docker,docker-compose,docker-swarm,Docker,Docker Compose,Docker Swarm,有人知道如何(如果可能)使用新的docker 1.12“swarm mode”swarm对swarm运行docker compose命令吗 我知道,在以前的“Docker Swarm”中,您可以通过更新Docker_主机以指向Swarm主机,直接对Swarm运行Docker compose命令: 导出DOCKER\u主机=”tcp://123.123.123.123:3375“ 然后简单地执行命令,就好像在对Docker engine的单个实例运行命令一样 或者这项功能是docker compo

有人知道如何(如果可能)使用新的docker 1.12“swarm mode”swarm对swarm运行docker compose命令吗

我知道,在以前的“Docker Swarm”中,您可以通过更新Docker_主机以指向Swarm主机,直接对Swarm运行Docker compose命令:
导出DOCKER\u主机=”tcp://123.123.123.123:3375“

然后简单地执行命令,就好像在对Docker engine的单个实例运行命令一样


或者这项功能是docker compose bundle正在取代的吗?

这是不可能的。Compose使用容器创建服务的客户端概念。Docker 1.12 Swarm模式引入了新的服务器端服务概念


您认为
docker组合包是正确的;docker stack deploy是一种在Swarm模式下运行Compose文件的方法。

我意识到我的问题措辞含糊不清,实际上有两个部分。但最终,我找到了解决这两个问题的办法

1) 在Docker 1.12远程机器上运行时,您能否直接“针对”swarm/swarm模式运行命令? 虽然您不能真正“针对”群集运行命令,但您可以在群集的主节点上运行
docker service
命令,以便在该群集上运行服务。
您还可以配置Docker守护程序(Docker守护程序是swarm的主节点)在TCP端口上侦听,以便从外部公开Docker API

2) 您仍然可以使用docker compose文件在docker 1.12 swarm模式下启动服务吗? 是的,尽管这些功能目前是Docker“实验性”功能的一部分。这意味着您必须下载/安装包含实验功能的版本(请查看github)。
您基本上遵循这些说明
从docker-compose.yml文件转到分布式应用程序包,然后转到应用程序堆栈(此时您的服务实际运行)。
$docker组合包

$docker部署[选项]堆栈

以下是我所做的:
  • 在我的远程swarm manager节点上,我使用以下选项启动docker:

    docker守护进程-D-Hunix:///var/run/docker.sock -Htcp://0.0.0.0:2375 &

    这将Docker守护进程配置为侦听标准Docker套接字
    unix:///var/run/docker.sock
    和上的
    localhost:2375

    警告:我不是为了简单而在这里启用TLS

  • 在本地机器上,我更新docker主机环境变量,使其指向swarm主节点。
    $export DOCKER\u HOST=”tcp://XX.XX.XX.XX:2377“
    (使用IP填充)

  • 导航到我的docker-compose.yml文件的目录

  • 从我的docker-compose.yml文件创建捆绑文件。确保包括
    .dab
    扩展名。
    docker compose bundle--fetch digests-o myNewBundleFile.dab

  • 从捆绑文件创建应用程序堆栈。不要在此处指定
    .dab
    扩展名。
    $docker部署myNewBundleFile


  • 现在我仍然遇到一些与网络相关的问题,但我已经成功地从未修改的docker-compose.yml文件中启动并运行了我的服务。我遇到的网络问题记录在这里:

    虽然Docker Compose中对Swarm模式的官方支持仍在进行中,但我创建了一个简单的脚本,它接受
    Docker Compose.yml
    文件并为您运行
    Docker service
    命令。有关详细信息,请参阅。

    的可能副本无法直接使用docker compose完成此操作,您需要绑定并使用实验构建加载堆栈。看,是的,它是@BMitch。回答得很好,谢谢!