Ern*_*kot 13 docker docker-machine
执行后;
eval $(docker-machine env mymachine)
Run Code Online (Sandbox Code Playgroud)
如何检查docker守护程序mymachine是否为群集管理器?
小智 19
您还可以使用docker info查看Swarm属性(inactive或active)的结果.
例如:
function isSwarmNode(){
if [ "$(docker info | grep Swarm | sed 's/Swarm: //g')" == "inactive" ]; then
echo false;
else
echo true;
fi
}
Run Code Online (Sandbox Code Playgroud)
BMi*_*tch 10
要检查一般群体成员身份,我的首选方法是使用中的格式化输出docker info。当前可能的值是非活动,挂起,活动,锁定和错误:
case "$(docker info --format '{{.Swarm.LocalNodeState}}')" in
inactive)
echo "Node is not in a swarm cluster";;
pending)
echo "Node is not in a swarm cluster";;
active)
echo "Node is in a swarm cluster";;
locked)
echo "Node is in a locked swarm cluster";;
error)
echo "Node is in an error state";;
*)
echo "Unknown state $(docker info --format '{{.Swarm.LocalNodeState}}')";;
esac
Run Code Online (Sandbox Code Playgroud)
要检查管理器状态,而不仅仅是群集中的一个节点,您想要的字段是.Swarm.ControlAvailable:
docker info --format '{{.Swarm.ControlAvailable}}'
Run Code Online (Sandbox Code Playgroud)
对于管理者,这将输出“ true”,对于作为工作者或不在群中的任何节点,将输出“ false”。
要标识工作程序节点,可以加入两个节点:
if [ "$(docker info --format '{{.Swarm.LocalNodeState}}')" = "active" \
-a "$(docker info --format '{{.Swarm.ControlAvailable}}')" = "false" ]; then
echo "node is a worker"
else
echo "node is not a worker"
fi
Run Code Online (Sandbox Code Playgroud)
我目前没有方便的swarm节点,但看起来你可以简单地运行类似的东西docker node ls.当定位不在 swarm节点中的docker守护程序时,会导致:
Error response from daemon: This node is not a swarm manager. Use "docker swarm init" or "docker swarm join" to connect this node to swarm and try again.
Run Code Online (Sandbox Code Playgroud)
并返回非零退出代码
$ echo $?
1
Run Code Online (Sandbox Code Playgroud)
所以测试看起来像:
if docker node ls > /dev/null 2>&1; then
echo this is a swarm node
else
echo this is a standalone node
fi
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8208 次 |
| 最近记录: |