我已成功在Digital Ocean机器上创建了自己的Docker Swarm,而没有使用" docker-machine create" docker SWARM挂钩。我不使用这些钩子的动机是提供更好的引导和与我的Consul提供者以及其他东西的集成。
我面临的问题是" docker -H XXX.XXX.XXX.XXX:3376 ps"工作意味着我的SWARM已正确初始化,但我无法获得" docker-compose"自从" docker-machine ls"没有识别SWARM。我已经阅读了docker-machine代码,试图找到" docker-machine ls"识别SWARM但找不到它。这是我的相关信息
搬运工-撰写-master.yml
...
swarm:
container_name: swarm-agent-master
hostname: swarm-master-server-1
image: swarm
ports:
- "<MASTER_IP>:3376:2375"
volumes:
- "/etc/docker:/certs"
command: manage -H tcp://0.0.0.0:2375 --replication --advertise <MASTER_IP>:3376 --tlsverify --tlscacert /certs/ca.pem --tlscert /certs/server.pem --tlskey /certs/server-key.pem consul://consul:8500
links:
- consul
environment:
SERVICE_NAME: manager
SERVICE_TAGS: swarm
restart: "always"
...
搬运工-撰写-client.yml
...
swarm:
container_name: swarm-agent
hostname: swarm-client-1
image: swarm
command: join --advertise <AGENT_IP>:2376 consul://consul:8500
links:
- consul
environment:
SERVICE_NAME: agent
SERVICE_TAGS: swarm
restart: "always"
...
请参阅以下输出
%> docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM
swarm-master-server-1 digitalocean Running tcp://<MASTER_IP>:2376
swarm-client-1 digitalocean Running tcp://<AGENT_IP>:2376
%> eval "$(docker-machine env --swarm swarm-master-server-1)"
swarm-master-server-1 is not a swarm master
%> eval "$(docker-machine env swarm-master-server-1)"
%> docker run swarm list consul://<CONSUL_IP>:8500
<AGENT_IP>:2376
%> docker -H tcp://<MASTER_IP>:3376 ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
<lists jobs running on AGENT>
%> docker -H tcp://<MASTER_IP>:3376 info
Containers: 3
Images: 4
Role: replica
Primary: <MASTER_IP>:3376
Strategy: spread
Filters: affinity, health, constraint, port, dependency
Nodes: 1
swarm-client-1: <AGENT_IP>:2376
└ Containers: 4
└ Reserved CPUs: 0 / 1
└ Reserved Memory: 0 B / 514.5 MiB
└ Labels: executiondriver=native-0.2, kernelversion=3.13.0-57-generic, operatingsystem=Ubuntu 14.04.3 LTS, provider=digitalocean, storagedriver=aufs
CPUs: 1
Total Memory: X GiB
Name: swarm-master-server-1
有谁知道我需要做些什么才能让Docker Machine识别我有一个SWARM,以便我可以连接并使用Docker Compose?
另外有人知道如何在没有泊坞机的情况下将码头工程师指向SWARM吗?
答案 0 :(得分:0)
全部。在设置了这个并继续前进之后,我设法在解决其他问题时间接地解决这个问题。为了回答我的第一个问题,docker-machine为位于
的每个节点创建一个配置文件~/.docker/machine/machines/<node_name>/config.json
这是获取该信息的地方。我没有尝试直接编辑它,这意味着可能存在一些问题,但这就是它。
我也意识到了第二个问题的答案。 Docker Machine只是方便在底层设置适当的环境变量。更具体地说
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://<IP>:<PORT>"
export DOCKER_CERT_PATH="<path>"
export DOCKER_MACHINE_NAME="<name>"
意味着您甚至不需要它将Docker Compose连接到Swarm,您只需要设置这些环境变量。