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 中删除某服务。该命令会在不做确认的情况下删除服务的所有副本,所以使用时应保持警惕。 |