基于Docker swarm 集群搭建SSR 学习
一、搭建Docker集群
1、安裝Docker
使用 yum 安裝
①、執行以下命令安裝依賴包:
$ sudo yum install -y yum-utils
device-mapper-persistent-data
lvm2
②、添加docker的yum源
$ sudoyum-config-manager
–add-repo
https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
官方源
$ sudo yum-config-manager \
--add-repo \https://download.docker.com/linux/centos/docker-ce.repo阿里云鏡像源
yum-config-manager\
–add-repo
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
③、更新 yum 軟件源緩存,并安裝 docker-ce。
$ sudo yum makecache fast
$ sudo yum install docker-ce
另外一種:使用腳本自動安裝
在測試或開發環境中 Docker 官方為了簡化安裝流程,提供了一套便捷的安裝腳本,CentOS 系統上可以使用這套腳本安裝:
$ curl -fsSL get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh --mirror Aliyun
執行這個命令后,腳本就會自動的將一切準備工作做好,并且把 Docker CE 的 Edge 版本安裝在系統中。
查詢已經安裝的Docker包
$ yum list installed | grep docker
2、啟動 Docker CE
$ sudo systemctl enable docker 開機自啟
$ sudo systemctl start docker
建立 docker 用戶組
默認情況下,docker 命令會使用 Unix socket 與 Docker 引擎通訊。而只有 root 用戶和 docker 組的用戶才可以訪問 Docker 引擎的 Unix socket。出于安全考慮,一般 Linux 系統上不會直接使用 root 用戶。因此,更好地做法是將需要使用 docker 的用戶加入 docker 用戶組。
建立 docker 組:(如果不是用的root用戶安裝執行,則需要將用戶加入到Docker用戶組)
$ sudo groupadd docker
將當前用戶加入 docker 組:
$ sudo usermod -aG docker $USER
退出當前終端并重新登錄,進行如下測試
查看Docker版本:
docker version
測試 Docker 是否安裝正確
$ docker run hello-world
docker run是啟動單個服務,如果是docker倉庫有的鏡像,則會直接下載鏡像
docker pull 鏡像名稱 該命令為下載鏡像
添加內核參數
如果在 CentOS 使用 Docker CE 看到下面的這些警告信息:
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
請添加內核配置參數以啟用這些功能。
$ sudo tee -a /etc/sysctl.conf <<-EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
然后重新加載 sysctl.conf 即可
$ sudo sysctl -p
3、刪除Docker
刪除Yum中的Docker軟件包
$ sudo yum remove docker-ce.x86_64 或 yum remove docker-ce
1
刪除Docker相關的所有鏡像、容器、自定義配置等一系列文件
$ sudo rm -rf /var/lib/docker
4、搭建集群
創建管理節點 ip地址為管理節點
docker swarm init --advertise-addr 192.168.10.17
將Worker節點加入swarm集群
docker swarm join --token SWMTKN-1-3cm5nxo0r2qc1kvfbfi2u2uc8je7sck5gh6371a08rj1jmeg47-5u7fascyt2vcuo1dcufskaw0v 192.168.10.101:2377
注:如果當時創建swarm時沒有記下命令的輸出,可以通過在manager節點上運行docker swarm join-token worker命令來獲取如何加入swarm的命令
管理Swarm集群:
$ docker swarm leave
Node left the swarm.
在刪除Docker集群節點后,集群中該節點仍然存在,但是狀態顯示為Down,
需要在Swarm的Manager節點執行以下命令, 刪除已經移除的節點
需要執行以下命令刪除從節點
docker node rm --force apxpcykqs1yql3mtreohzrff8
apxpcykqs1yql3mtreohzrff8為節點ID ,通過命令docker node ls可以查看集群情況
主節點離開集群
docker swarm leave --force #必須使用參數–force,強制離開集群,否則會報錯
docker node ls #列出Swarm集群中的所有的節點。
docker node ls -q #只列出所有的節點的ID
docker node inspect <ID/HOSTNAME> #展示詳細節點的信息
docker node inspect <ID/HOSTNAME> --pretty #展示詳細節點的信息
docker node rm <ID/HOASTNAME> #從Swarm集群中移除node
docker node promote <ID/HOSTNAME> #把節點升級為manager節點
docker node demote <ID/HOSTNAME> #把節點降級為node節點
刪除服務
docker service rm ykh567kc9maj
ykh567kc9maj 是服務的ID
用docker service ls查看
二、部署SSR服務
1、安裝Docker Compose
curl -L “https://github.com/docker/compose/releases/download/1.23.1/docker-compose-(uname?s)?(uname -s)-(uname?s)?(uname -m)” -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
2、部署SSR-Docker
下載SSR的配置文件 yum -y install git 安裝git
git clone https://github.com/winterssy/SSR-Docker.git ~/SSR-Docker
要注意配置文件路徑,如果弄錯服務會無法啟動
在集群上部署SSR服務:
docker stack deploy -c ./docker-compose.yml sssr
查看服務
docker service ps sssr_ssr
docker service ls
docker stack deploy 部署新的堆棧或更新現有堆棧
docker stack ls 列出現有堆棧
docker stack ps 列出堆棧中的任務
docker stack rm 刪除堆棧
docker stack services 列出堆棧中的服務
如果是修改 yml 文件和 應用服務的 配置文件,重新執行命令
docker stack deploy -c ./docker-compose.yml sssr 就可以更新服務了
常用命令:
列出鏡像
docker image ls
刪除鏡像
docker image rm 鏡像ID
docker ps
進入容器
docker exec –it 容器id bash
或者
docker exec -it 容器id /bin/sh
查看容器進程:
docker top 容器id
查看docker所啟動的服務:
docker ps
查看容器:
docker ps -qa
[root@docker-master-ssr SSR-Docker]# docker ps -qa
ea6474e61004
ea8680e1964a
0ae3907cc23e
6eefa3a6bc2b
查看容器日志:
docker logs 6eefa3a6bc2b
可以查看容器啟動時報錯的日志
docker exec提示錯誤oci runtime error: exec failed: container_linux.go
sudo docker exec -it 569f05d5f4fc /bin/bash
提示錯誤
rpc error: code = 13 desc = invalid header field value “oci runtime error:
\ exec failed: container_linux.go:247:
\ starting container process caused “exec: \”/bin/bash\”:
\ stat /bin/bash: no such file or directory"\n"
嘗試
sudo docker exec -it 569f05d5f4fc /bin/sh
or
sudo docker exec -it 569f05d5f4fc bash
總結
以上是生活随笔為你收集整理的基于Docker swarm 集群搭建SSR 学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 通信教程 | 串口丢数据常见的原因
- 下一篇: C语言 ,嵌入式 ,c++,数据结构 面