在Docker Swarm上运行Docker Compose

时间:2016-08-16 16:28:15

标签: docker docker-compose docker-swarm

我已经开始了一个码头大师:

docker swarm init --advertise-addr <MANAGER-IP>

所以,我试图让我的shell指向swarm master:

eval $(docker-machine env --swarm <MANAGER-IP>)

但它给了我一个错误:Host does not exists

docker info

-bash-4.2$ docker info
Containers: 18
 Running: 1
 Paused: 0
 Stopped: 17
Images: 20
Server Version: 1.12.0
Storage Driver: devicemapper
 Pool Name: docker-253:1-25646-pool
 Pool Blocksize: 65.54 kB
 Base Device Size: 10.74 GB
 Backing Filesystem: xfs
 Data file: /dev/loop0
 Metadata file: /dev/loop1
 Data Space Used: 3.124 GB
 Data Space Total: 107.4 GB
 Data Space Available: 13.4 GB
 Metadata Space Used: 5.071 MB
 Metadata Space Total: 2.147 GB
 Metadata Space Available: 2.142 GB
 Thin Pool Minimum Free Space: 10.74 GB
 Udev Sync Supported: true
 Deferred Removal Enabled: false
 Deferred Deletion Enabled: false
 Deferred Deleted Device Count: 0
 Data loop file: /var/lib/docker/devicemapper/devicemapper/data
 WARNING: Usage of loopback devices is strongly discouraged for production use. Use `--storage-opt dm.thinpooldev` to specify a custom block storage device.
 Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
 Library Version: 1.02.107-RHEL7 (2016-06-09)
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: host bridge null overlay
Swarm: active
 NodeID: 05szzy2z96ypgl5k21swggoil
 Is Manager: true
 ClusterID: a2wrfuga2tu4cm4k0lxxorqtm
 Managers: 1
 Nodes: 3
 Orchestration:
  Task History Retention Limit: 5
 Raft:
  Snapshot interval: 10000
  Heartbeat tick: 1
  Election tick: 3
 Dispatcher:
  Heartbeat period: 5 seconds
 CA configuration:
  Expiry duration: 3 months
 Node Address: 10.193.46.89
Runtimes: runc
Default Runtime: runc
Security Options: seccomp
Kernel Version: 3.10.0-327.28.2.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 15.51 GiB
Name: scsor0004331002.rtp.openenglab.netapp.com
ID: T52U:6MWQ:XEDM:2TGH:ITLQ:YD6B:R3MR:MWF5:CFBM:G6PX:W4LG:6SR7
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Username: eugenepark3
Registry: https://index.docker.io/v1/
WARNING: bridge-nf-call-ip6tables is disabled
Insecure Registries:
 127.0.0.0/8

任何人都知道我需要为eval $(docker-machine env --swarm <MANAGER-IP>)添加什么才能让我的作品可以在群集群上运行?

我应该把主人的名字,但我不知道如何找到它

-bash-4.2$ docker node ls
ID                           HOSTNAME                                   STATUS  AVAILABILITY  MANAGER STATUS
05szzy2z96ypgl5k21swggoil *  scsor0004331002.rtp.openenglab.netapp.com  Ready   Active        Leader
59t110b0wjhitj1fr8erys600    scsor0004331003.rtp.openenglab.netapp.com  Ready   Active
dhm6utu2w3dw1to0zh3n71moq    scsor0004331004.rtp.openenglab.netapp.com  Ready   Active

1 个答案:

答案 0 :(得分:2)

您将基于容器的swarm命令与直接嵌入Docker CLI的基于swarmkit的Swarm混合起来。使用新版本的Swarm,还没有直接支持docker-compose。考虑这是一个适用于有限范围的beta产品。您可以尝试使用docker引擎的实验版本,该版本添加了对使用docker stack CLI管理的DAB文件的支持。 DAB文件从docker-compose bundle导出,然后导入Docker。此功能仍处于试验阶段,预计会发生变化。

如果不这样,docker-compose的任何内容都只能在单个docker引擎上运行,因为swarm访问都是在不同的docker service CLI界面下完成的。