我的docker-compose.yml
是:
version: '2'
services:
db:
build: ./postgres
ports:
- "5432:5432"
volumes:
- postgres-data:/data
env_file: .env
environment:
- "constraint:node=edge"
networks:
- back-tier
volumes:
postgres-data:
driver: local
networks:
back-tier:
driver: overlay
我在docker swarm
的{{1}}中有两个节点。我用以下内容创建了它们:
google
我可以用## Swarm master
docker-machine --debug create --driver google --google-project my_project --swarm --swarm-discovery="consul://$cip:8500" --engine-opt="cluster-store=consul://$cip:8500" --engine-opt="cluster-advertise=eth0:2376" --swarm-master --engine-label node=director --google-disk-size 100 --google-machine-type n1-standard-2 director
## Nodo edge
docker-machine --debug create --driver google --google-project my_project --swarm --swarm-discovery="consul://$cip:8500" --engine-opt="cluster-store=consul://$cip:8500" --engine-opt="cluster-advertise=eth0:2376" --engine-label node=edge --google-scopes https://www.googleapis.com/auth/devstorage.read_write --google-disk-size 250 --google-machine-type n1-standard-4 node-0
docker-machine ls
consul - google Running tcp://X.X.X.X:2376 v1.11.0
director * (swarm) google Running tcp://X.X.X.X:2376 director (master) v1.11.0
node-0 - google Running tcp://X.X.X.X:2376 director v1.11.0
工作:
labels
$ docker-machine ls --filter label=node=edge
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
node-0 - google Running tcp://X.X.X.X:2376 v1.11.0
输出
docker info
所以一切似乎都是对的,对吧?
但是当我尝试运行$ docker info
Containers: 3
Running: 3
Paused: 0
Stopped: 0
Images: 4
Server Version: swarm/1.2.0
Role: primary
Strategy: spread
Filters: health, port, dependency, affinity, constraint
Nodes: 2
director: 104.154.88.186:2376
└ Status: Healthy
└ Containers: 2
└ Reserved CPUs: 0 / 2
└ Reserved Memory: 0 B / 7.67 GiB
└ Labels: executiondriver=, kernelversion=4.2.0-18-generic, node=director, operatingsystem=Ubuntu 15.10, provider=google, storagedriver=aufs
└ Error: (none)
└ UpdatedAt: 2016-04-24T04:43:50Z
└ ServerVersion: 1.11.0
node-0: 104.197.85.59:2376
└ Status: Healthy
└ Containers: 1
└ Reserved CPUs: 0 / 4
└ Reserved Memory: 0 B / 15.42 GiB
└ Labels: executiondriver=, kernelversion=4.2.0-18-generic, node=edge, operatingsystem=Ubuntu 15.10, provider=google, storagedriver=aufs
└ Error: (none)
└ UpdatedAt: 2016-04-24T04:43:41Z
└ ServerVersion: 1.11.0
Plugins:
Volume:
Network:
Kernel Version: 4.2.0-18-generic
Operating System: linux
Architecture: amd64
CPUs: 6
Total Memory: 23.09 GiB
Name: director
Docker Root Dir:
Debug mode (client): false
Debug mode (server): false
WARNING: No kernel memory limit support
发生以下情况:
docker-compose up -d
除了删除$ docker-compose up -d
Creating network "infraestructura_back-tier" with driver "overlay"
Creating volume "infraestructura_postgres-data" with local driver
Building db
Step 1 : FROM postgres:9.5
---> 0f3af79d8673
Step 2 : ADD create_tables.sql /docker-entrypoint-initdb.d
---> Using cache
---> 2f818eec1228
Successfully built 2f818eec1228
WARNING: Image for service db was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`.
Creating infraestructura_db_1
ERROR: for db Unable to find a node that satisfies the following conditions
[port 5432 (Bridge mode)]
我做错了什么?
顺便说一下,我的版本是:"constraint:node=edge"
答案 0 :(得分:2)
您可以尝试更改此行:
- "constraint:node=edge"
到
- "constraint:node==edge"
答案 1 :(得分:1)
错误提及端口5432
。
ERROR: for db Unable to find a node that satisfies the following conditions
[port 5432 (Bridge mode)]
所以Docker在检查是否有打开端口5432的节点后失败。 你确定Postgres还没有在两个节点上运行,或者其他一些容器已经在端口5432上监听了吗?
答案 2 :(得分:1)
在创建新容器之前,你能用docker-compose rm销毁旧容器。