Kubernetes/Docker/Docs/Docker集群.md
offends 7a2f41e7d6
All checks were successful
continuous-integration/drone Build is passing
synchronization
2024-08-07 18:54:39 +08:00

4.4 KiB

本文作者:丁辉

Docker Swarm集群

官方文档

节点IP 角色
192.168.1.10 MASTER
192.168.1.20 WORKER

开始组建集群

  1. 初始化 MASTER 节点

    docker swarm init
    

    指定 IP

    docker swarm init --advertise-addr 192.168.1.10
    

    指定网段

    --default-addr-pool 192.168.1.0/24
    
  2. WORKER 节点加入集群

    docker swarm join --token <token> 192.168.1.10:2377
    
  3. 检查所有节点

    docker node ls
    

    删除节点命令为

    docker swarm leave
    

    强制使用 --force 参数

常用基础命令

  • 查看加入 MASTER TOKEN

    docker swarm join-token manager
    
  • 查看加入 WORKER TOKEN

    docker swarm join-token worker
    
  • 查看所有节点

    docker node ls
    
  • 查看节点详情

    docker node inspect <节点名称> --pretty
    

Secrets 基础操作

  • 创建 Secrets

    docker secret create <Secrets名称> ./<文件位置>
    

    echo 创建 Secrets

    echo "内容" | docker secret create <Secrets名称> -
    

    openssl 创建 Secrets,生成一个随机的20个字符的密码,并将其作为密钥存储到Docker中

    openssl rand -base64 20 | docker secret create mysql_password -
    
  • 查看 Secrets

    docker secret ls
    
  • 检查 Secrets

    docker secret inspect <Secrets名称>
    
  • 删除 Secrets

    docker secret rm <Secrets名称>
    

Network 基础操作

  • 创建 Network

    docker network create -d overlay <网络名称>
    
  • 查看 Network

    docker network ls
    
  • 检查 Network

    docker network inspect <网络名称>
    
  • 删除 Network

    docker network rm <网络名称>
    

Volume 基础操作

  • 创建 Volume

    docker volume create -d overlay <存储名称>
    
  • 查看 Volume

    docker volume ls
    
  • 检查 Volume

    docker volume inspect <存储名称>
    
  • 删除 Volume

    docker volume rm <存储名称>
    

启动容器测试

docker service create \
   --name mysql \
   --replicas 1 \
   --mount type=bind,source=/data/mysqld,destination=/var/lib/mysql \
   -e MYSQL_ROOT_PASSWORD="root" \
   mysql

其他参数

  • 指定 Docker 节点

    --constraint 'node.hostname==节点名称'
    
  • 指定对外端口

    --publish published=<容器对外端口>,target=<容器内部端口>
    
  • 挂载 volume 存储

    --mount type=volume,source=<指定存储名称>,destination=<容器内部路径>
    
  • 指定网络

    --network <网络名称>
    
  • 挂载 secret

    --secret source=<secret名称>,target=<容器内路径>
    

常见参数说明

参数 说明
--name 指定服务的名称
--replicas 指定服务的副本数
--constraint 指定服务运行的节点约束条件
--publish 将容器的端口映射到主机的端口
--mount 将主机上的目录或文件挂载到容器内
--network 将服务连接到指定的Docker网络
--secret 将指定的Docker secret文件挂载到容器内
-e 指定容器内的环境变量
--env-file 指定容器内的环境变量文件
--restart-condition 指定容器的重启策略
--update-delay 指定服务更新之间的延迟时间
--update-parallelism 指定服务更新时的并行数量
--update-failure-action 指定服务更新失败后的操作
--update-max-failure-ratio 指定服务更新失败的最大比率
--endpoint-mode 指定服务的网络端点模式