【问题标题】:Docker-Compose with Docker 1.12 "Swarm Mode"Docker-Compose 与 Docker 1.12“群模式”
【发布时间】:2016-07-13 14:04:41
【问题描述】:

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

我知道使用之前的“Docker Swarm”,您可以通过更新 DOCKER_HOST 以指向 swarm master 来直接针对 swarm 运行 docker-compose 命令:
export DOCKER_HOST="tcp://123.123.123.123:3375"
然后像在单个 Docker 引擎实例上运行命令一样简单地执行命令。

或者docker-compose bundle 正在取代这个功能?

【问题讨论】:

标签: docker docker-compose docker-swarm


【解决方案1】:

我意识到我的问题措辞含糊,实际上有两个部分。然而,最终,我能够找到解决这两个问题的方法。

1) 您能否在远程机器上运行的 Docker 1.12 中直接“针对”集群/集群模式运行命令?

虽然您不能真正“针对”集群运行命令,但您可以在集群的主节点上运行 docker service 命令,以便在该集群上运行服务。
您还可以配置 Docker 守护程序(作为 swarm 主节点的 docker 守护程序)侦听 TCP 端口,以便在外部公开 Docker API。

2) Docker 1.12 swarm-mode 中还能使用 docker-compose 文件启动服务吗?

是的,尽管这些功能目前是 Docker 的“实验性”功能的一部分。这意味着您必须下载/安装包含实验性功能的版本(查看 github)。
您基本上遵循这些说明https://github.com/docker/docker/blob/master/experimental/docker-stacks-and-bundles.md
从 docker-compose.yml 文件到分布式应用程序包,然后到应用程序堆栈(这是您的服务实际运行的时间)。
$ docker-compose bundle
$ docker deploy [OPTIONS] STACK

这是我所做的:

  1. 在我的远程 swarm manager 节点上,我使用以下选项启动了 docker:

    docker daemon -D -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375 &

    这会将 Docker 守护进程配置为侦听标准 docker 套接字 unix:///var/run/docker.socklocalhost:2375
    警告:为了简单起见,我不会在此处启用 TLS

  2. 在我的本地计算机上,我更新 docker 主机环境变量以指向我的 swarm 主节点。
    $ export DOCKER_HOST="tcp://XX.XX.XX.XX:2377"(使用您的 IP 填充)

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

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

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

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

【讨论】:

    【解决方案2】:

    虽然 Docker Compose 中对 Swarm 模式的官方支持仍在进行中,但我已经创建了一个简单的脚本,它接受 docker-compose.yml 文件并为您运行 docker service 命令。详情请见https://github.com/ddrozdov/docker-compose-swarm-mode

    【讨论】:

      【解决方案3】:

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

      docker-compose bundle; docker stack deploy 是让 Compose 文件在 Swarm 模式下运行的方法是正确的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-16
        • 2021-05-06
        相关资源
        最近更新 更多