docker 集群之 swarm 和 stack 的基本使用


1,准備的軟件

1,兩台(最好三台) 安裝了 centos7 系統 和 docker 軟件的機器,虛擬機也行

2,兩台機器之間能互通網絡

3,筆者下面使用兩台機器的主機地址:192.168.200.101 和 192.168.200.102

2,使用 swarm

1,簡單說說理論

  • 1,是什么? swarm 是用於 docker 集群的自帶軟件
  • 2,集群方式? 采用一個主機,多個從機(工作節點)的模式
  • 3,功能? 只需要在主機部署容器,從機會同步相應的容器(需要擁有相同的倉庫)
  • 4,作用? 省去在分布式開發中多台機器需要逐一去部署的繁雜步驟,以后只需要在主機部署容器,並指定需要多少子機,就能統一部署

2,在 101 主機上創建主機,swarm 不需要單獨安裝,主要安裝了 docker 就自帶了該軟件,執行下面的命令后,會自動生成從機加入的命令

docker swarm init

3,將 102 作為從機加入到 101 的主機,執行上圖紅框內的命令,會出現幾節點加入的提示

4,查看集群節點,注意該命令 只能在主機使用

docker node ls

3,部署容器,以 nginx 服務器為例,采用 docker-compose 的模式

1,docker-compose.yml,stock 啟動時,不能指定容器名稱

version: '3.1'
services:
  nginx:
    restart: always
    image: nginx
    ports:
      - 80:80
    deploy:
      mode: replicated   # stack 啟動時,指定模式
      replicas: 2        # stack 啟動時,指定啟動多少節點
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
      - ./www:/usr/share/nginx/www

2,nginx.conf

# 這里不能省,指定啟動的用戶,不指定可能會出現 403 等錯誤
user root;

# 啟動多少個進程,一般和 CPU 的核數相同
worker_processes  1;

events {
    # 每個進程的最大並發數
    worker_connections  1024;
}

http {

    include            mime.types;
    default_type       application/octet-stream;
    sendfile           on;
    keepalive_timeout  65;  
    
    # 配置一個服務
    server {
    
        # 監聽的端口
        listen 80;
        
        # 虛擬主機名稱(一般為域名)
        server_name  localhost;

        # 配置資源的本地路徑,以及缺省路由自動默認響應文件
        location / {
            root   /usr/share/nginx/www/html80;
            index  index.html index.htm;
        }

    }
}

4,在目錄下創建 www 目錄,創建 html80 目錄,並創建一個 index.html,並寫上你想要的內容如

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>HELLO</title>
</head>
<body>
	<h1> SWARM 集群測試 </h1>
</body>
</html>

5,整個目錄結構如下

6,在該目錄下執行以下命令,啟動容器

docker stack deploy -c docker-compose.yml nginx
  • 1,docker stack deploy 固定命令
  • 2,-c 指定啟動的 docker-compose.yml 文件地址
  • 3,nginx 堆棧名(集群)

7,查看是否啟動成功

docker stack ls
docker stack ps nginx

8,在主機和個從機執行 docker ps 查看是否存在該容器

9,瀏覽器輸入訪問,一切 OK


3,docker stack 常用的命令,下面命令中:[*]代表自定義的部分

1,部署新的堆棧(集群):docker stack deploy -c [docker-compose.yml文件地址] [堆棧名]

2,查看所有堆棧(集群):docker stack ls

3,查看堆棧下的任務:docker stack ps [堆棧名]

4,刪除堆棧(集群):docker stack rm [堆棧名]

4,docker stack 常用命令

1,初始化一個主機:docker swarm init

2,作為從機加入主機:docker swarm join --token=[toekn] [ip][port]

3,移除一個從機:id 可以使用 docker node ls 查看

  • 1,在主機上操作,清空從機容器:docker node update --availability drain [id]
  • 2,再從機上操作,從機離開主機:docker swarm leave
  • 3,在主機上操作,刪除從機節點:docker node rm [id]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM