docker、docker swarm

docker

一、docker常用命令

  • docker images
  • docker ps
  • docker ps -a
  • docker ps -q
  • docker ps -a -q
  • docker rm -f
  • docker run -it -d --name nginx -p 本地端口:容器端口 nginx:latest
  • docker exec -it 容器ID/容器NAME /bin/bash
  • docker pull/push
  • docker top 镜像ID
  • docker image inspect 镜像ID
  • docker container inspect 容器ID
  • docker network ls
  • docker volume ls

二、docker swarm

1、swarm集群搭建

docker swarm init --advertise-addr=10.0.0.1:2377  --listen-addr=10.0.0.1:2377 

advertise-addr 指定其他节点用来连接到当前管理节点的IP 和端口。这一属性是可选的,当节点上有多个IP 时,可以用于指定使用哪个IP。此外,还可以用于指定一个节点上没有的 IP,比如一个负载均衡的 IP。
listen-addr 指定用于承载 Swarm 流量的 IP和端口。其设置通常与--advertise-addr 相匹配,但是当节点上有多个 IP 的时候,可用于指定具体某个IP。并且,如果 --advertise-addr 设置了一个远程IP 地址(如负载均衡的IP地址),该属性也是需要设置的。建议执行命令时总是使用这两个属性来指定具体 IP 和端口。

docker node ls

列出集群中的swarm节点

docker swarm join-token worker

获取添加新的工作节点到 Swarm 的命令和 Token。

docker swarm join-token manager

获取添加新的工作节点到 Swarm 的命令和 Token。

docker swarm join --token SWMTKN-1-0uasddsxsdsadsue4hv6ps3p 10.0.0.1:2377 --advertise-addr 10.0.0.2:2377 --listen-addr 10.0.0.1:2377

添加管理节点到swarm集群,注意token要使用管理节点的token

docker swarm join --token SWMTKN-1-0udsadsdsdddsc87tud8dx2c 10.0.0.1:2377 --advertise-addr 10.0.0.4:2377 --listen-addr 10.0.0.4:2377

添加工作节点到swarm集群,注意token要使用工作节点的token

2、swarm管理器高可用性(HA)

  • 内置有高可用机制,主节点一般3个或5个,防止出现脑裂问题。

3、swarm安全机制

  • Swarm 集群内置有繁多的安全机制,并提供了开箱即用的合理的默认配置——如 CA 设置、接入 Token、公用 TLS、加密集群存储、加密网络、加密节点 ID 等。

4、锁定swarm

  • 创建swarm集群前出传入--autolock参数可以直接启用锁
docker swarm init --autolock=true
  • 如果已经搭建好集群,也可以使用docker swarm update来启用锁。
docker swarm update --autolock=true
- 请确保将解锁码保存到安全位置
- 重启docker,systemctl restart docker
- 此时执行docker node ls,会提示该节点不可用,需要使用解锁码重启加入集群。
- docker swarm unlock,根据提示输入解锁码加入集群,集群恢复。

三、docker swarm服务

1、创建服务

  • 使用docker service create创建服务
docker service create --name web-vue -p 5001:5001 --replicas 3 webapp-vue:latest

使用 docker service creale 命令告知 Docker 正在声明一个新服务,并传递 --name 参数将其命名为 web-vue。将每个节点上的 5001 端口映射到服务副本内部的 5001 端口。接下来,使用 --replicas 参数告知 Docker 应该总是有 3 个此服务的副本。最后,告知 Docker 哪个镜像用于副本,重要的是,要了解所有的服务副本使用相同的镜像和配置。

2、查看服务

  • 使用docker service ls查看服务
  • 使用docker service ps <服务名/服务ID> 查看服务状态
  • 查看更详细的服务信息:docker service inspect --pretty <服务名/服务ID>

3、副本服务VS全局服务

  • 服务的默认复制模式(Replication Mode)是副本模式(replicated)。
  • 这种模式会部署期望数量的服务副本,并尽可能均匀地将各个副本分布在整个集群中。
  • 另一种模式是全局模式(global),在这种模式下,每个节点上仅运行一个副本。可以通过给 docker service create 命令传递 --mode global 参数来部署一个全局服务。

4、服务的扩缩容

  • 使用docker service scale命令可对服务进行扩容
docker service scale web-vue=10
  • 使用 docker service ls 查看服务状态
  • 缩容
docker service scale web-vue=3

5、删除服务

  • 使用docker service rm <服务名/服务ID>删除一个服务
  • 查看被删除的服务:docker service ls
  • 请谨慎使用 docker service rm命令,因为它在删除所有服务副本时并不会进行确认

6、滚动升级

  • 创建网络并将服务接入网络
docker network create -d overlay pro-net
  • 创建一个新的服务,并接入pro-net网络
docker service create --name pay-svc --network pro-net -p 9001:80 --replicas 10 pro/pay-svc:v1

通过对服务声明 -p 9001:9001 参数,会建立 Swarm 集群范围的网络流量映射,到达 Swarm 任何节点 9001 端口的流量,都会映射到任何服务副本的内部 9001 端口。

  • 默认的模式,是在 Swarm 中的所有节点开放端口,称为入站模式(Ingress Mode)。此外还有主机模式(Host Mode),即仅在运行有容器副本的节点上开放端口。

  • 以主机模式开放端口,需要较长的格式的声明语法,如下:

docker service create --name pay-svc --network pro-net --publish published=9001,target=9001,mode=host --replicas 10 pro/pay-svc:v1
  • 假设镜像更新后的tag为:v2,本次升级任务在将新镜像更新到swarm中时采用一种阶段性的方式,每次更新两个副本,并且中间间隔20s。
  • 更新命令
docker service update --image pro/pay-svc:v2 --update-parallelism 2 --update-delay 20s pay-svc
  • 使用 docker service ps pay-svc 观察发现,有些副本的版本号是v2,有些依然是v1。如果给与足够的时间,则所有副本都会达到期望状态,即基于v2版本的镜像。
  • 使用 docker service inspect --pretty pay-svc 查看服务变更的详细信息。

7、docker swarm服务日志

  • 使用docker service logs [服务名]来查看日志

四、docker swarm常用命令

命令
说明
docker swarm init 用于创建一个新的 Swarm。执行该命令的节点会成为第一个管理节点,并且会切换到 Swarm 模式。
docker swarm join-token 用于查询加入管理节点和工作节点到现有 Swarm 时所使用的命令和 Token。要获取新增管理节点的命令,请执行 docker swarm join-token manager 命令;要获取新增工作节点的命令,请执行 docker swarm join-token worker 命令。
docker node ls 用于列出 Swarm 中的所有节点及相关信息,包括哪些是管理节点、哪个是主管理节点。
docker service create 用于创建一个新服务。
docker service ls 用于列出 Swarm 中运行的服务,以及诸如服务状态、服务副本等基本信息。
docker service ps 该命令会给出更多关于某个服务副本的信息。
docker service inspect 用于获取关于服务的详尽信息。附加 --pretty 参数可限制仅显示重要信息。
docker service scale 用于对服务副本个数进行增减。
docker service update 用于对运行中的服务的属性进行变更。
docker service logs 用于查看服务的日志。
docker service rm 用于从 Swarm 中删除某服务。该命令会在不做确认的情况下删除服务的所有副本,所以使用时应保持警惕。
posted @ 2021-03-26 13:02  lnsix  阅读(188)  评论(0编辑  收藏  举报