配置(初始化)docker swarm
docker swarm init --advertise-addr=本机IP地址 #指定其他节点用来连接到当前管理节点的IP和端口
docker-swarm 初始化时会创建一个类型为overlay的网络
初始化后分别会出现如何添加manager节点和worker节点的提示

查看swarm节点
docker node ls

这里的ID是node-id,复制的时候不要复制到 ,只用复制6grp8...3ad就行
查看docker网络信息
docker network ls

查看当前swarm状态和信息
docker info
节点的添加
docker swarm join-token worker #在manager节点执行,可以作为worker节点加入集群
复制以下内容在其他两台worker主机 上执行 即可将执行的主机 以worker 权限添加到doker-swarm 集群中




docker swarm join-token manager #在manager节点执行,可以作为manager节点加入集群
复制以下内容在其他两台worker主机 上执行 即可将执行的主机 以manager 权限添加到doker-swarm 集群中

节点权限提升/降低
docker node promote slave1 #提高slave1节点的权限

docker node demote slave1 #降低slave1节点的权限

节点脱离集群
docker swarm leave #想要那个节点脱离集群就在那个节点下执行此命令


常用docker swarm leave --force#退出manager节点,manager节点只能强制退出并且manager退出后意味着整个swarm将不复存在!
删除已经脱离集群的节点
docker node rm slave2 #删除已经脱离集群的slave节点,如果是多个manager节点中的其中一个节点需要先将节点降为worker节点才能删除!

为节点添加/修改/删除标签
docker node update --label-add <label-name>=<label-value> <node-name> #添加标签

docker node update --label-add <label-name>=<new-label-value> <node-name> #修改标签

docker node update --label-rm <label-name> <node-name> #删除标签

查看节点标签及详细信息
docker node inspect <node-name>
查看服务详细信息
docker service inspect <service-name>
就是在显示容器列表的命令后面加上--no-trunc,大概是不省略的意思
docker ps -a --no-trunc
docker service ps --no-trunc
复制容器内的文件到本机
将a288697容器内的/opt/demo1.txt文件复制到本机/root/目录下
docker cp a288697:/opt/demo1.txt /root/
从主机复制文件到容器内
将本机/root/demo2.txt文件复制到a288697容器内的/opt/目录下
docker cp /root/demo2.txt a288697:/opt/
删除标签为none的docker镜像
docker rmi $(docker images | grep '<none>' | awk '{ print $3 }')
查看容器所在宿主机对应的/var/lib/docker/overlay2是哪个
docker inspect -f '{{.GraphDriver.Data.MergedDir}}' <容器名>
看容器是否设置了自动重启策略
docker container inspect --format='{{.HostConfig.RestartPolicy.Name}}' <容器名>
更新正在运行的容器为自动重启
docker update --restart=always <容器id>