使用 Docker 1.12 "Swarm Mode"编写 Docker

标签 docker docker-compose docker-swarm

有人知道如何(如果可能的话)使用新的 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 正在取代的东西吗?

最佳答案

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

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 包
$ 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

关于使用 Docker 1.12 "Swarm Mode"编写 Docker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38353959/

相关文章:

Docker Swarm、Kubernetes 和 Compose

docker - 托管服务器返回 localhost/web

php - symfony 第一次无法安装资源

java - org.elasticsearch.client.transport.NoNodeAvailableException : None of the configured nodes are available: []

postgresql - docker部署的postgresql镜像运行了一段时间后无法对spring应用程序进行身份验证

docker - Web应用程序docker swarm将源代码放在哪里?

node.js - Node JS Docker 文件版本不正确

amazon-web-services - 在 AWS ECS 上使用 docker-compose 进行持续部署的最佳实践

docker 和 jwilder/nginx-proxy http/https 问题

docker - 如何动态更改 docker-compose 图像字段