docker+jenkins+rancher+k8s


架構部署:

1.docker私有鏡像倉庫
2.jenkins鏡像
3.存儲卷
4.rancher容器管理
5.k8s容器編排

6.eureka
7.config
8.zuul
9.oauth
10.client

11.mysql
12.redis


.170部署:
1.docker私有鏡像倉庫
2.jenkins鏡像
3.存儲卷
4.rancher容器管理
5.k8s容器編排

.171部署:
6.eureka1
7.config1
8.zuul1
9.oauth1
10.client1
11.mysql1
12.redis1

.172部署:
6.eureka2
7.config2
8.zuul2
9.oauth2
10.client2
11.mysql2
12.redis2
12.redis3

環境准備

主機名 Ip 地址 Docker 版本 主機系統
Server 192.168.20.151
Node1 192.168.20.151
Node2 192.168.20.152

firewall-cmd --zone=public --add-port=22/tcp --permanent
firewall-cmd --reload


0.0安裝linux
裝完后沒網
vi /ect/sysconfig/network-scripts/ifcfg-ens33
ONBOOT=yes
:wq
systemctl restart network

安裝ifconfig

yum search ifconfig

yum install -y net-tools

yum -y install wget

yum install -y lrzsz

yum install -y vim

0.0安裝docker
去清華大學開源鏡像站上下載指定倉庫文件
https://mirrors.tuna.tsinghua.edu.cn/
docker-ce
linux
centos
cd /etc/yum.repos.d/
下載 wget https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
修改文件里的下載訪問路徑
vi docker-ce.repo
:%s@https://download.docker.com/@https://mirrors.tuna.tsinghua.edu.cn/docker-ce/@

:wq

查看
yum repolist

安裝
yum install docker-ce

systemctl enable docker

docker version 查看是否按照成功

阿里雲Docker CE 鏡像

step 1: 安裝必要的一些系統工具

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

Step 2: 添加軟件源信息

sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

Step 3: 更新並安裝Docker-CE

sudo yum makecache fast
sudo yum -y install docker-ce

Step 4: 開啟Docker服務

sudo service docker start
啟動docker:systemctl start docker
停止docker:systemctl stop docker
重啟docker:systemctl restart docker
查看docker狀態:systemctl status docker
開機啟動:systemctl enable docker

docker基礎命令

查看docker版本

$ docker version

檢索image

$ docker search image_name

下載image

$ docker pull image_name

列出鏡像列表

$ docker images

刪除鏡像

$ docker rmi image_name

啟動容器

$ docker run

列出當前所有正在運行的container

$ docker ps

列出所有的container

$ docker ps -a

刪除容器

$docker rm Name/ID

停止容器

$ docker stop Name/ID

啟動容器

$ docker start Name/ID

重啟容器

$ docker restart Name/ID

從一個容器中取日志

$docker logs Name/ID

讀取docker容器日志的后一千行信息的命令

vim /etc/hosts
------------這一步后開始克隆linux
hostname 可查看當前本機的主機名
hostnamectl set-hostname Master #vi /etc/hostname 可進入VI編輯模式按I改本機的主機名
vim /etc/sysconfig/network-scripts/ifcfg-ens33
ONBOOT=yes #設置為開機啟動;
BOOTPROTO=static #開機協議,有dhcp及static;
IPADDR=192.168.20.151 #配置ip
GATEWAY=192.168.20.2 #網關地址
NETMASK=255.255.255.0 #子網掩碼
DNS1=192.168.20.2 #dns服務器1,
DNS2=144.144.144.144 #dns服器2
NM_CONTROLLED=no # network mamager 的參數,實時生效,不需要重啟
systemctl restart
reboot

Xshell 連接虛擬機特別慢 解決方案
vim /etc/ssh/sshd_config
UseDNS no 增加 #UseDNS yes —>默認為注釋行 查看GSSAPIAuthentication no
systemctl restart sshd

vi /etc/hosts 進去VI編輯模式按I添加被克隆的虛擬機的IP地址與克隆后的虛擬機的IP地址

192.xxx.xxx.1 name1
192.xxx.xxx.2 name2

vim /etc/udev/rules.d/70-persistent-net.rules 虛擬機MAC地址

UseDNS no

修改鏡像倉庫代理地址

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://e7m5fxhx.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

systemctl restart docker

https://www.jianshu.com/p/40f4fbe1ec22

安裝rancher
系統設置

1.禁用系統 firewalld
systemctl stop firewalld.service 關閉firewalld
systemctl disable firewalld.service 禁用firewalld系統重啟firewalld服務不會加載
2.打開包轉發

vi /etc/sysctl.conf #編輯該文件,將其中的如下內容,設置為 1

net.ipv4.lp_forward=1

sysctl -p #讓設置,立即生效

3.更新系統
yum update -y
4.關閉 selinux
vi /etc/selinux/config
將 SELINUX=enforcing 改為 SELINUX=disabled
reboot
重啟機器
5.安裝 docker、iptables 等應用
yum install docker iptables iptables-services net-tools -y
設置開機自啟動
6.配置 docker 加速器
vi /etc/docker/daemon.json
{
"registry-mirrors": [
"http://xxxxx.m.daocloud.io"
]
}

第一步:
1.0安裝rancher
:如果是1.x系列的,鏡像名為rancher/server,而2.x是rancher/rancher
cd /
docker pull rancher/rancher

直接運行 Rancher_server:

docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher

docker run --privileged -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher

1.1查看鏡像列表
docker image ls

1.2查看rancher鏡像詳細信息
docker inspect rancher/rancher:latest

1.3當前下載的版本為
CATTLE_SERVER_VERSION=v2.2.7

1.4顯而易見,rancher鏡像主要有兩個volume目錄,默認方式是采用匿名卷的方式。

1.5執行如下命令,在宿主機創建兩個掛載目錄
mkdir -p /docker_volume/rancher_home/cni
mkdir -p /docker_volume/rancher_home/kubelet
mkdir -p /docker_volume/rancher_home/rancher
mkdir -p /docker_volume/rancher_home/log

解決方案:
docker stop $(docker ps -aq)
docker system prune -f
docker volume rm $(docker volume ls -q)
docker image rm $(docker image ls -q)
rm -rf /etc/ceph
/etc/cni
/etc/kubernetes
/opt/cni
/opt/rke
/run/secrets/kubernetes.io
/run/calico
/run/flannel
/var/lib/calico
/var/lib/etcd
/var/lib/cni
/var/lib/kubelet
/var/lib/rancher/rke/log
/var/log/containers
/var/log/pods
/var/run/calico
rm -rf /docker_volume/rancher_home/cni
rm -rf /docker_volume/rancher_home/kubelet
rm -rf /docker_volume/rancher_home/rancher
rm -rf /docker_volume/rancher_home/log \

docker run --privileged -d --restart=unless-stopped -p 80:80 -p 443:443
-v /docker_volume/rancher_home/cni:/var/lib/cni
-v /docker_volume/rancher_home/kubelet:/var/lib/kubelet
-v /docker_volume/rancher_home/rancher:/var/lib/rancher
-v /docker_volume/rancher_home/log:/var/log
-e JAVA_OPTS="-Xmx1024m" rancher/rancher

1.6使用掛載到指定的主機目錄方式來進行數據卷持久化同時啟動rancher
docker run -d --restart=unless-stopped -p 80:80 -p 443:443
-v /docker_volume/rancher_home/rancher:/var/lib/rancher
-v /docker_volume/rancher_home/auditlog:/var/log/auditlog
--name rancher -e JAVA_OPTS="-Xmx1024m" rancher/rancher

1.7執行如下命令查看我們剛才啟動的容器信息
docker container ls

1.8增加開放端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --reload

1.9為admin賬戶設置默認密碼
admin
admin

1.10設置rancher server url,可以是IP地址或主機名,但是你要保證群集的每個節點都能夠連接到它

192.168.20.151
點擊Save URL按鈕后,即將跳轉到rancher管理主頁。

1.11通過右下角的語言選項來選擇語言,這里我們選擇簡體中文。

1.12創建集群 需要安裝時間同步插件 在下面
點擊圖中的添加集群按鈕,進入添加集群頁面

1.13選擇"添加主機自建Kubernetes集群"/"CUSTOM"

1.14輸入你的集群名稱
SpringCloud

1.15下面的成員角色、集群選項等幾個tab都可展開進行詳細的配置,這里我們不進行配置

1.16網絡組件
選擇Canal,直接點擊下一步

1.17勾選上所有的主機角色

修改主機名,不然重名的話k8s連接失敗
hostnamectl set-hostname 140
hostnamectl set-hostname 141
hostnamectl set-hostname 142

1.18將頁面中第二步里顯示的命令復制到宿主機進行執行,這里的命令是頁面動態生成,所以沒有復制到這里

1.19執行成功后我們的瀏覽器中會提示如下圖所示的信息[1台新主機注冊成功]

1.20點擊完成按鈕后,會跳轉到集群首頁

這時候你可以稍作等待,這個時間可能有點長,
因為這期間會在后台給我們pull多個鏡像並會啟動多個容器。
直到集群處於Active狀態(如下圖)時,說明集群創建成功了。
注:如果等太久,則給大一點內存。

1.21可以通過命令看看剛才集群創建過程中都為我們拉取了哪些鏡像和啟動了哪些容器
docker image ls
docker container ls

https://www.jianshu.com/u/4f36546f7853


https://www.jianshu.com/p/01bb90bfcabb
1.22上一步創建的集群中給我們分配了兩個項目Default和System,接下來我們在Default項目中部署我們的服務

1.23點擊部署服務按鈕

linux修改靜態ip
https://blog.csdn.net/xiaozelulu/article/details/80495525

安裝時間同步插件
https://blog.csdn.net/vah101/article/details/91868147
yum install ntp ntpdate -y
vim /etc/ntp.conf
restrict 192.168.20.2 mask 255.255.255.0 nomodify notrap
server 192.168.20.151 prefer
server ntp3.aliyun.com iburst

service ntpd restart
systemctl disable chronyd.service
chkconfig --level 345 ntpd on

ntpq -p

etcd - 這些主機可以用來保存集群的數據。
controlplane - 這些主機可以用來存放運行K8s所需的Kubernetes API服務器和其他組件。
worker - 這些是您的應用程序可以部署的主機。

1.24連接另一台服務器141,點集群springcloud升級,去掉Etcd,勾選Worker和Control,復制粘貼命令
140中執行:
firewall-cmd --zone=public --add-port=2379/tcp --permanent
firewall-cmd --zone=public --add-port=2380/tcp --permanent
firewall-cmd --zone=public --add-port=6443/tcp --permanent
firewall-cmd --zone=public --add-port=10250/tcp --permanent
firewall-cmd --reload

141中執行:
firewall-cmd --zone=public --add-port=2379/tcp --permanent
firewall-cmd --zone=public --add-port=2380/tcp --permanent
firewall-cmd --zone=public --add-port=6443/tcp --permanent
firewall-cmd --zone=public --add-port=10250/tcp --permanent
firewall-cmd --reload

1.25
在141中執行
vi /etc/docker/daemon.json
{
"registry-mirrors": ["http://86d2a50b.m.daocloud.io"]
}

1.26連接另一台服務器142,點集群springcloud升級,去掉Etcd,勾選Worker和Control,復制粘貼命令
142中執行:
firewall-cmd --zone=public --add-port=2379/tcp --permanent
firewall-cmd --zone=public --add-port=2380/tcp --permanent
firewall-cmd --zone=public --add-port=6443/tcp --permanent
firewall-cmd --zone=public --add-port=10250/tcp --permanent
firewall-cmd --reload

1.27
在142中執行
vi /etc/docker/daemon.json
{
"registry-mirrors": ["http://86d2a50b.m.daocloud.io"]
}
重啟docker
systemctl restart docker

1.28導出etcd鏡像去142加載,速度快些
142安裝rz\sz命令:yum -y install lrzsz

141上導出鏡像
docker save rancher/coreos-etcd:v3.3.10-rancher1 -o etcd.tar
142上安裝鏡像
docker load -i etcd.tar

1.29創建rancher標簽
iprange=170
iprange=171

1.30給142加上標簽
iprange=172

1.31給141和142加上標簽
deploy=worker

2.0安裝jenkins
通過Rancher部署服務來完成jenkins的安裝
首先下載鏡像
當然,從rancher的部署頁中啟動可以自動為我們下載部署的鏡像
但我們這里為了更清晰的使用,采用手動pull鏡像的方式,執行如下命令:
docker pull jenkins/jenkins:alpine

當然如果你有鏡像提供者的Dockerfile那就更好了
有了Dockerfile,你可以更為清楚的了解這個鏡像的制作過程,方便后面的使用。

2.1接下來,在宿主機創建掛載文件夾
mkdir -p /water/runfile/docker_volume/jenkins_home

2.2因為 jenkins user - uid 1000(容器內使用的用戶可能沒有主機上文件夾的權限),所以這里我們更改目錄用戶組及用戶

chown -R 1000:1000 /water/runfile/docker_volume/jenkins_home

一下三行不需要

firewall-cmd --zone=public --add-port=30000/tcp --permanent

firewall-cmd --zone=public --add-port=30001/tcp --permanent

firewall-cmd --reload

2.3在rancher的部署頁中做如下操作
1.輸入名稱 jenkins
2.輸入鏡像名稱 jenkins/jenkins:alpine
3.添加端口映射 30000(主機):8080(容器)和 30001(主機):50000(容器)
4.添加一個路徑映射卷,卷名為jenkins-home
主機路徑的話就是填入我們先前創建的/water/runfile/docker_volume/jenkins_home目錄路徑,
選擇為現有目錄並映射到容器路徑/var/jenkins_home目錄路徑
4.0.1后面maven的配置文件
4.1因為要在jenkins下執行docker命令,所以再掛載兩個宿主機的路徑/var/run/docker.sock:/var/run/docker.sock /usr/bin/docker:/usr/bin/docker
4.2因為jenkins里要執行docker命令,所以將用戶設置為uid為0的用戶啟動。點擊高級選項,命令,用戶uid填寫0
5.點擊啟動按鈕

這幾個步驟其實反應到我們docker容器中就如同下面的命令:
docker run -d --restart unless-stopped --name jenkins
-p 30000:8080 -p 30001:50000
-v /water/runfile/docker_volume/jenkins_home:/var/jenkins_home
jenkins/jenkins:alpine

2.4刷新等待,直到等到服務狀態為Active后說明服務部署成功

2.5你可以點擊如下圖中標紅的連接http://192.168.232.140:30000/ 就是我們先前對8080映射到了主機30000端口

2.6初始化Jenkins
到我們的主機映射目錄去查看密碼
cat /water/runfile/docker_volume/jenkins_home/secrets/initialAdminPassword

當然也可以在rancher中操作選項里操作執行命令行,在這個里面操作命令就是基於容器內部文件路徑了

2.7選擇"按照系統建議的插件",一直等到插件安裝完成,這可能需要幾分鍾時間
非常遺憾默認的插件里沒有我們用到的maven,后面需要自己配置插件,
從這里我們也要思考一下以后在做項目中,能夠考慮用Gradle來替代maven,這也許是一個流行趨勢

2.8創建用戶設置密碼
root
root

2.9安裝maven
在全局工具配置中安裝maven, 選擇一個合適的版本,勾選自動安裝,之后直接保存,
需注意的是,現在jenkins並不會立即給你安裝maven軟件

2.10maven名字為:jenkins-in-maven

2.11接下來我們在插件管理中查找maven插件,
可以在瀏覽器中使用ctrl+f快捷鍵來快速定位插件,
選擇好maven integration插件,然后點擊直接安裝

2.12創建一個maven項目進行一下構建,這里構建肯定會失敗,因為沒有指定倉庫等信息
配置git地址,maven的pom spring-base/spring-eureka/pom.xml 命令clean package -Dmaven.test.skip=true

2.13構建后會自動下載maven.zip

2.14在正式構建項目代碼前,需要配置maven的倉庫等信息
在宿主機執行如下命令進入jenkins-in-maven目錄(先前安裝的默認目錄) 並通過ls查看目錄下清單列表
cd /water/runfile/docker_volume/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/jenkins-in-maven

2.15指定Repository目錄和mirror等配置
vi conf/settings.xml
在相應位置加入如下配置,並保存退出vi模式

/var/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/jenkins-in-maven/repository

alimaven aliyun maven http://maven.aliyun.com/nexus/content/groups/public/ central

標簽下

2.16配置好后繼續點擊構建
構建完成后找到jar位置
cd /water/runfile/docker_volume/jenkins_home/workspace/springcloud-eureka/spring-base/spring-eureka/target

Rancher及Docker快速上手指南(二)
https://blog.csdn.net/weixin_33896069/article/details/89592679
Rancher
https://192.168.232.140/p/c-drj2c:p-bj5j9/workloads
Docker-Eureka集群搭建
https://blog.csdn.net/qq_26663155/article/details/82785740


3創建私有倉庫
docker pull registry

3.1因為Docker從1.3.X之后,與docker registry交互默認使用的是https,
然而此處搭建的私有倉庫只提供http服務,所以當與私有倉庫交互時就會報上面的錯誤
"registry-mirrors": ["https://registry.docker-cn.com"],
insecure-registries:是為解決https的問題所以配置

141 142上執行
vi /etc/docker/daemon.json
{
"registry-mirrors": ["http://86d2a50b.m.daocloud.io"],
"insecure-registries": ["192.168.232.140:5000"]
}

systemctl restart docker

mkdir -p /water/runfile/docker_volume/registry

3.1到rancher部署registry容器,
服務名 registry
鏡像名registry:latest
端口5000
映射路徑
/water/runfile/docker_volume/registry:/var/lib/registry

高級選項 網絡 是否選用主機網絡選擇是,后台會在啟動時加上--net=host命令,表示不虛擬出網卡,不然erueka注冊ip有問題

點擊啟動

firewall-cmd --zone=public --add-port=5000/tcp --permanent
firewall-cmd --reload

實際運行的命令如下:
docker run -d -p 5000:5000
--name=dockerregistry
--privileged=true
-v /water/runfile/docker_volume/registry:/var/lib/registry registry

4.0創建項目Dockerfile文件生成鏡像
在spring-eureks項目main目錄下新建docker目錄,新建Dockerfile文件
FROM java:8

將本地文件夾掛載到當前容器

VOLUME /tmp

ADD spring-eureka-0.0.1-SNAPSHOT.jar app.jar
RUN ["/bin/bash","-c","touch /app.jar"]

指定JAVA 環境變量

ENV JAVA_HOME /jdk/jre
ENV PATH $PATH:$JAVA_HOME/bin
ENV CLASSPATH .:$JAVA_HOME/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

開放8000端口

EXPOSE 8000

配置容器啟動后執行的命令

ENTRYPOINT ["java","-jar","/app.jar"]

4.1在jenkins配置里,配置根據Dockerfile創建鏡像並上傳到私有鏡像倉庫

項目名稱springcloud-eureka
spring-base/spring-eureka/pom.xml
clean package -Dmaven.test.skip=true

點擊maven的高級按鈕
DEFAULT
Settings file 選擇文件系統中的settings文件
/var/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/jenkins-in-maven/conf/settings.xml

cp /var/jenkins_home/workspace/springcloud-eureka/spring-base/spring-eureka/src/main/docker/Dockerfile /var/jenkins_home/workspace/springcloud-eureka/spring-base/spring-eureka/target/
點擊保存按鈕

下面三行不要了,用jenkins插件實現的

cd /var/jenkins_home/workspace/springcloud-eureka/spring-base/spring-eureka/target/

/bin/docker build -t 192.168.232.140:5000/spring-eureka .

/bin/docker push 192.168.232.140:5000/spring-eureka

4.2在jenkins里安裝雲 docker插件
系統設置->新增一個雲docker,把前面掛載的docker.sock 文件寫入Docker Host URI 中:unix:///var/run/docker.sock,
可以點擊 右中位置的TestConnection按鈕進行測試是否連接成功

4.3接下來配置eureka服務,Post Steps里添加一個Build/Publish Docker Image選項
Directory for Dockerfile填寫. (就一個點) 填寫:/var/jenkins_home/workspace/springcloud-eureka/spring-base/spring-eureka/target/
Cloud選擇先前添加docker雲配置的名稱,
然后輸入鏡像名192.168.232.140:5000/spring-eureka
Push image打勾
Clean local images打勾

4.4在rancher里配置集群的私有倉庫地址
在集群命令行中執行:
kubectl create secret docker-registry mysecret --docker-server=192.168.232.140:5000 --docker-username=root --docker-password=lang --docker-email=lang@lang.com

4.5部署eureka服務,部署工作負載
spring-eureka
192.168.232.140:5000/spring-eureka
端口 8000 8000
主機調度 deploy worker
高級選項 網絡 是否選用主機網絡選擇是,后台會在啟動時加上--net=host命令,表示不虛擬出網卡,不然erueka注冊ip有問題

firewall-cmd --zone=public --add-port=8000/tcp --permanent
firewall-cmd --reload

點擊啟動

5.0給eureka1設置只在iprange=171標簽的主機上運行
修改配置提交git給eureka2設置只在iprange=172標簽的主機上運行

5.1
將registry和jenkins分配到擁有指定標簽170的主機上
將eureka服務分配到擁有指定標簽171的主機上

6.0創建config項目Dockerfile文件生成鏡像
在spring-config項目main目錄下創建Dockerfile文件並配置jenkins里的打包
jenkins里面復制一個maven項目即可,改一下配置和路徑
springcloud-config
spring-base/spring-config/pom.xml
clean package -Dmaven.test.skip=true

點擊maven的高級按鈕
DEFAULT
Settings file 選擇文件系統中的settings文件
/var/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/jenkins-in-maven/conf/settings.xml

cp /var/jenkins_home/workspace/springcloud-config/spring-base/spring-config/src/main/docker/Dockerfile /var/jenkins_home/workspace/springcloud-config/spring-base/spring-config/target/

/var/jenkins_home/workspace/springcloud-config/spring-base/spring-config/target/
Cloud選擇先前添加docker雲配置的名稱,
然后輸入鏡像名192.168.232.140:5000/spring-config
Push image打勾
Clean local images打勾

6.1在rancher里創建config服務
spring-config
192.168.232.140:5000/spring-config
8888 8888
主機調度 deploy worker
高級選項 網絡 是否選用主機網絡選擇是,后台會在啟動時加上--net=host命令,表示不虛擬出網卡,不然erueka注冊ip有問題
配置linux本機的端口映射,網絡防火牆
firewall-cmd --zone=public --add-port=8888/tcp --permanent
firewall-cmd --reload

config部署成功

7.0創建spring-zuul的Dockerfile文件並配置jenkins里的打包
項目名稱springcloud-zuul
spring-zuul/pom.xml
clean package -Dmaven.test.skip=true

執行shell->
cp /var/jenkins_home/workspace/springcloud-zuul/spring-zuul/src/main/docker/Dockerfile /var/jenkins_home/workspace/springcloud-zuul/spring-zuul/target/

Directory for Dockerfile->/var/jenkins_home/workspace/springcloud-zuul/spring-zuul/target/

Image->192.168.232.140:5000/spring-zuul
Clean local images勾選,推到私有倉庫后本地不留

7.1在rancher里創建zuul服務
spring-zuul
192.168.232.140:5000/spring-zuul
8001 8001
主機調度 deploy worker
高級選項 網絡 是否選用主機網絡選擇是,后台會在啟動時加上--net=host命令,表示不虛擬出網卡,不然erueka注冊ip有問題

這個應用也不需要外放訪問,只要再做一個nginx鏡像將路徑轉發到這個機器即可

配置linux本機的端口映射,網絡防火牆
firewall-cmd --zone=public --add-port=8001/tcp --permanent
firewall-cmd --reload

zuul部署成功

8.0部署reids鏡像
在141上部署redis1,在142上部署redis2和redis3

在140上執行,也可以在rancher直接部署,它會自動下載鏡像
docker pull redis:5.0.5-alpine3.10

按照慣例查看一下鏡像詳細信息
docker image inspect redis:5.0.5-alpine3.10

推送到私有倉庫去
docker tag redis:5.0.5-alpine3.10 192.168.232.140:5000/redis:5.0.5-alpine3.10
docker push 192.168.232.140:5000/redis:5.0.5-alpine3.10
docker rmi 192.168.232.140:5000/redis:5.0.5-alpine3.10
docker rmi redis:5.0.5-alpine3.10

8.1Redis通過RDB和AOF兩種方式來進行數據的持久化,先創建一個主機目錄作為持久化目錄進行數據掛載

8.2rancher部署redis服務之前,先做好遠程掛載卷,
https://www.cnblogs.com/st-jun/p/7742560.html
因為現在的目錄和文件都在140上,而redis是部署到141,142動態部署,不可能手動去創建文件夾和conf文件,所以在動態主機上掛載遠程存儲卷。

8.2.1服務器端安裝NFS服務
140上執行
判斷有沒有裝NFS,rpm -qa nfs-utils rpcbind

如果沒有,那就安裝NFS服務的nfs-unitls和rpcbind(會自動同時自動安裝rpcbind)
yum -y install nfs-utils

啟動rpcbind服務(一定要先啟動rpcbind服務再啟動nfs服務)
systemctl status rpcbind

systemctl stop rpcbind
systemctl stop nfs-utils
systemctl start rpcbind
systemctl start nfs-utils
systemctl enable rpcbind
systemctl enable nfs-utils

8.2.2
nfs除了主程序端口2049和rpcbind的端口111是固定以外,還會使用一些隨機端口,以下配置將定義這些端口,以便配置防火牆
vi /etc/sysconfig/nfs

結尾追加端口配置

MOUNTD_PORT=4001
STATD_PORT=4002
LOCKD_TCPPORT=4003
LOCKD_UDPPORT=4003
RQUOTAD_PORT=4004

:wq

vi /etc/exports
/water/runfile/docker_volume 192.168.232.140/24(rw,sync,wdelay,hide,no_subtree_check,sec=sys,secure,root_squash,no_root_squash)

這里可以配置多個路徑,我只配置了/water/runfile/docker_volume

rpc.nfsd 8
rpc.mountd

exportfs -r

使配置生效

exportfs

可以查看到已經ok

firewall-cmd --zone=public --add-port=2049/udp --permanent
firewall-cmd --zone=public --add-port=2049/tcp --permanent
firewall-cmd --zone=public --add-port=111/udp --permanent
firewall-cmd --zone=public --add-port=111/tcp --permanent
firewall-cmd --zone=public --add-port=4001/udp --permanent
firewall-cmd --zone=public --add-port=4001/tcp --permanent
firewall-cmd --zone=public --add-port=4004/udp --permanent
firewall-cmd --zone=public --add-port=4004/tcp --permanent
firewall-cmd --reload

systemctl restart nfs-config
systemctl restart nfs-idmap
systemctl restart nfs-lock
systemctl restart nfs-server
systemctl enable nfs-config
systemctl enable nfs-idmap
systemctl enable nfs-lock
systemctl enable nfs-server

rpcinfo -p

在nfs客戶機上執行:
141、142上執行:
yum -y install nfs-utils

systemctl stop rpcbind
systemctl stop nfs-utils
systemctl start rpcbind
systemctl start nfs-utils
systemctl enable rpcbind
systemctl enable nfs-utils

給141主機添加標簽redis=redisM,給142主機添加標簽redis=redisS


這里不用,這是單節點的redis。使用下面的reids集群

8.2.3 Rancher2.0中使用NFS存儲,在集群中創建持久卷(添加PV)
填寫添加持久卷參數-名稱-卷插件-容量-路徑-服務器-訪問模式
nfs-pv
NFS-Share 10
/water/runfile/docker_volume 192.168.232.140
是否只讀:否
多主機讀寫

點擊完成
持久卷PV添加完成后的可用狀態-Available

8.2.4 在項目Default中創建數據卷(PVC),pv是全局的,pvc是命名空間的
工作負載-負載均衡-服務發現-PVC(勾)-流水線

添加數據卷-先選擇項目-數據卷-添加卷
填寫:卷聲明名稱-選擇剛創建的持久化卷-訪問模式
nfs-pvc-redis
持久卷(PV) 選擇:nfs-pv
自定義: 多主機讀寫

數據卷的卷聲明和持久卷已經綁定完畢

8.2.5部署工作負載(redis)時使用PVC
這步在8.6創建reids服務的時候來選擇卷里操作


140上執行:
mkdir -p /water/runfile/docker_volume/redis/data

目錄掛載
/water/runfile/docker_volume/redis/data:/data

自定義配置文件掛載:
創建配置文件目錄
mkdir -p /water/runfile/docker_volume/redis/conf
編輯配置文件
cd /water/runfile/docker_volume/redis/conf
vi redis.conf
,,文件在文件夾下,因為內容太多不貼在這里
相關修改的配置參考
https://blog.csdn.net/JetaimeHQ/article/details/83303346

8.3rancher部署redis服務
redisM
192.168.232.140:5000/redis:5.0.5-alpine3.10
6379 6379
主機調度:redis=redisM
數據卷:掛載到遠程主機存儲路徑,選擇"使用現有PVC"
redism-data
選擇pvc:nfs-pvc-redis
/data redis/data
/usr/local/etc/redis/redis.conf redis/conf/redis.conf

默認是不用配置文件啟動的,在高級選項,命令里,加上redis-server /usr/local/etc/redis/redis.conf
高級選項 網絡 選用主機網絡

firewall-cmd --zone=public --add-port=6379/tcp --permanent
firewall-cmd --reload

啟動

8.4遠程連接redis
redis-cli.exe -h 192.168.232.141 -p 6379


8.5rancher部署redis集群
https://cloud.tencent.com/developer/article/1432088
https://my.oschina.net/ruoli/blog/2252393

配置文件還是用140上共享的目錄

mkdir -p /water/runfile/docker_volume/redis_cluster
mkdir -p /water/runfile/docker_volume/redis_cluster/7001/data
mkdir -p /water/runfile/docker_volume/redis_cluster/7002/data
mkdir -p /water/runfile/docker_volume/redis_cluster/7003/data
cd /water/runfile/docker_volume/redis_cluster


rpc.nfsd 8
rpc.mountd

exportfs -r

使配置生效

exportfs

可以查看到已經ok


vi /water/runfile/docker_volume/redis_cluster/7001/redis.conf
vi /water/runfile/docker_volume/redis_cluster/7002/redis.conf
vi /water/runfile/docker_volume/redis_cluster/7003/redis.conf

將原版的redis配置寫入,並主要修改如下配置:

bind 127.0.0.1

port 7001 #端口
cluster-enabled yes #啟用集群模式
cluster-config-file /data/nodes.conf
cluster-node-timeout 5000 #超時時間
logfile "/data/redis.log" #輸出日志
appendonly yes
daemonize no #是否后台運行,這里不能改成yes,不然docker運行就關閉了
protected-mode no #非保護模式
pidfile /var/run/redis.pid

8.6配置文件完成后開始在rancher里創建redis服務

在rancher里springcloud里添加一個新的命名空間
redis-cluster

保存

8.7先加一個rediscluster命名空間的pv和pvc用來共享存儲,開始建的命名空間在Default,所以用不了

填寫添加持久卷參數-名稱-卷插件-容量-路徑-服務器-訪問模式
nfs-redisclutser-pv
NFS-Share 10
/water/runfile/docker_volume 192.168.232.140
是否只讀:否
多主機讀寫

點擊完成
持久卷PV添加完成后的可用狀態-Available

工作負載-負載均衡-服務發現-PVC(勾)-流水線
選擇添加pvc
nfs-redisclutser-pvc 命名空間:選擇剛創建的redis-cluster
持久卷(PV) 選擇:nfs-redisclutser-pv
自定義: 多主機讀寫

數據卷的卷聲明和持久卷已經綁定完畢

8.8部署redis master服務(部署工作負載)
redisClusterM
192.168.232.140:5000/redis:5.0.5-alpine3.10 命名空間:選擇剛創建的redis-cluster
7001 7001
17001 17001
主機調度:redis=redisM
數據卷:掛載到遠程主機存儲路徑,選擇"使用現有PVC"
redisclusterm-data
選擇pvc:nfs-redisclutser-pvc
/data redis_cluster/7001/data
/usr/local/etc/redis/redis.conf redis_cluster/7001/redis.conf

數據卷:將時區文件掛載一下,選擇"映射主機目錄"
localtime
/etc/localtime /etc/localtime

數據卷:將/usr/bin掛載一下,選擇"映射主機目錄",不然啟動redis集群有問題
usr-bin
/usr/bin /usr/bin
如果這個目錄映射不行,就用docker logs命令查看鏡像調用的docker-entrypoint.sh文件在哪里,在主機上找出
find / -name docker-entrypoint.sh
cp .....到某個主機目錄,映射到容器啟動的路徑上,如下:
/usr/local/bin/docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh

默認是不用配置文件啟動的,在高級選項,命令里,加上redis-server /usr/local/etc/redis/redis.conf
高級選項 網絡 選用主機網絡

firewall-cmd --zone=public --add-port=7001/tcp --permanent
firewall-cmd --zone=public --add-port=17001/tcp --permanent
firewall-cmd --reload

啟動

8.9部署redis slaves(部署工作負載)
redisClusterS1
192.168.232.140:5000/redis:5.0.5-alpine3.10 命名空間:選擇剛創建的redis-cluster
7002 7002
17002 17002
主機調度:redis=redisS
數據卷:掛載到遠程主機存儲路徑,選擇"使用現有PVC"
redisclusters-data
選擇pvc:nfs-redisclutser-pvc
/data redis_cluster/7002/data
/usr/local/etc/redis/redis.conf redis_cluster/7002/redis.conf

數據卷:將時區文件掛載一下,選擇"映射主機目錄"
localtime
/etc/localtime /etc/localtime

數據卷:將/usr/bin掛載一下,選擇"映射主機目錄",不然啟動redis集群有問題
usr-bin
/usr/bin /usr/bin
如果這個目錄映射不行,就用docker logs命令查看鏡像調用的docker-entrypoint.sh文件在哪里,在主機上找出
find / -name docker-entrypoint.sh
cp .....到某個主機目錄,映射到容器啟動的路徑上,如下:
/usr/local/bin/docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh

默認是不用配置文件啟動的,在高級選項,命令里,加上redis-server /usr/local/etc/redis/redis.conf
高級選項 網絡 選用主機網絡

firewall-cmd --zone=public --add-port=7002/tcp --permanent
firewall-cmd --zone=public --add-port=17002/tcp --permanent
firewall-cmd --reload


redisClusterS2
192.168.232.140:5000/redis:5.0.5-alpine3.10 命名空間:選擇剛創建的redis-cluster
7003 7003
17003 17003
主機調度:redis=redisS
數據卷:掛載到遠程主機存儲路徑,選擇"使用現有PVC"
redisclusters-data
選擇pvc:nfs-redisclutser-pvc
/data redis_cluster/7003/data
/usr/local/etc/redis/redis.conf redis_cluster/7003/redis.conf

數據卷:將時區文件掛載一下,選擇"映射主機目錄"
localtime
/etc/localtime /etc/localtime

數據卷:將/usr/bin掛載一下,選擇"映射主機目錄",不然啟動redis集群有問題
usr-bin
/usr/bin /usr/bin
如果這個目錄映射不行,就用docker logs命令查看鏡像調用的docker-entrypoint.sh文件在哪里,在主機上找出
find / -name docker-entrypoint.sh
cp .....到某個主機目錄,映射到容器啟動的路徑上,如下:
/usr/local/bin/docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh

默認是不用配置文件啟動的,在高級選項,命令里,加上redis-server /usr/local/etc/redis/redis.conf
高級選項 網絡 選用主機網絡

firewall-cmd --zone=public --add-port=7003/tcp --permanent
firewall-cmd --zone=public --add-port=17003/tcp --permanent
firewall-cmd --reload

8.10將三個redis串聯起來變成集群
下載redis-cli客戶端鏡像,在140上執行:

docker pull goodsmileduck/redis-cli:v5.0.3
docker tag goodsmileduck/redis-cli:v5.0.3 192.168.232.140:5000/goodsmileduck/redis-cli:v5.0.3
docker push 192.168.232.140:5000/goodsmileduck/redis-cli:v5.0.3
docker rmi 192.168.232.140:5000/goodsmileduck/redis-cli:v5.0.3
docker rmi goodsmileduck/redis-cli:v5.0.3

8.11在rancher里部署redis-cli服務
redis-cli
192.168.232.140:5000/goodsmileduck/redis-cli:v5.0.3
網絡:是否用主機網絡:是

啟動

8.12在rancher里執行命令,將三個redis串聯起來
cd bin
redis-cli --cluster create 192.168.232.141:7001 192.168.232.142:7002 192.168.232.142:7003 --cluster-replicas 0
輸入:yes

redis集群至少要3個主節點,這里只有3個節點,所以沒有從節點,所以cluster-replicas為0

如果是六個節點的話就執行如下

redis-cli --cluster create 192.168.232.141:7001 192.168.232.142:7002 192.168.232.142:7003 192.168.232.142:7004 192.168.232.142:7005 192.168.232.142:7006 --cluster-replicas 1

create 表示創建一個redis集群。
--cluster-replicas 1 表示為集群中的每一個主節點指定一個從節點,即一比一的復制

8.13查看redis集群
在windows啟動redis client時,要使用集群模式啟動,不然操作key因為哈希槽操作而報錯不方便
redis-cli.exe -c -h 192.168.232.142 -p 7003

查看集群中的節點
cluster nodes


下面是單機版mysql

9.0搭建mysql鏡像
docker pull mysql:8.0.17
docker tag mysql:8.0.17 192.168.232.140:5000/mysql:8.0.17
docker push 192.168.232.140:5000/mysql:8.0.17
docker rmi 192.168.232.140:5000/mysql:8.0.17
docker rmi mysql:8.0.17

9.1創建mysql映射的文件夾
mkdir -p /water/runfile/docker_volume/mysql8/data
mkdir -p /water/runfile/docker_volume/mysql8/conf

9.2給141主機創建標簽
mysql=mysqlM
給142主機創建標簽
mysql=mysqlS

9.2在rancher里配置mysql服務,啟動后,在容器內將配置文件給撈出來
mysql8
192.168.232.140:5000/mysql:8.0.17 命名空間:default
3306 3306

增加環境變量
MYSQL_ROOT_PASSWORD=123456

主機調度:mysql=mysqlM
數據卷:掛載到遠程主機存儲路徑,選擇"使用現有PVC"
mysqlm-data
選擇pvc:nfs-pvc-redis(以前單redis創建的)
/var/lib/mysql mysql8/data

/etc/mysql/my.cnf mysql8/conf/my.cnf

高級選項 網絡:選擇主機網絡

啟動

9.2.1在linux shell獲取conf文件內容並將root登錄的范圍改成不限制ip
docker ps
docker exec -it 47da7da9f81d /bin/bash

修改root登錄范圍:
mysql -u root -p
123456
use mysql;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
flush privileges;

cd /etc/mysql/
/bin/cat my.cnf
復制內容就出來了

9.2.3將配置文件加上幾行配置
[client]
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4

在[mysqld]下加上
max_connections=10000
default-time_zone='+8:00'
character-set-client-handshake=FALSE
character_set_server=utf8mb4
collation-server=utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci'
wait_timeout=2147483
interactive_timeout=2147483

停止容器然后將my.conf復制到140的共享存儲目錄mysql8/conf里面
清除上次啟動映射出的文件 rm -rf /water/runfile/docker_volume/mysql8/data/*

firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload

9.3在rancher里啟動mysql8
然后用navicat連接192.168.232.141 3306
窗口創建lovesound數據庫
運行1.oauth2表.sql

10.0Mysql主從搭建
修改mysql的配置文件,增加如下屬性
:server-id屬性的值需要每個mysql不一樣

port=3310

[client]
socket=/var/run/mysqld/mysqld.sock
[mysql]
socket=/var/run/mysqld/mysqld.sock

[mysqld]
skip-host-cache
skip-name-resolve
general_log_file=/var/lib/mysql/query.log
slow_query_log_file=/var/lib/mysql/slow.log
log-error=/var/lib/mysql/error.log
log-bin=mysql-bin
server-id=10000

從的:

port=3311

[client]
socket=/var/run/mysqld/mysqld.sock
[mysql]
socket=/var/run/mysqld/mysqld.sock

[mysqld]
skip-host-cache
skip-name-resolve
general_log_file=/var/lib/mysql/query.log
slow_query_log_file=/var/lib/mysql/slow.log
log-error = /var/lib/mysql/error.log
log-bin=mysql-bin
server-id=10001

firewall-cmd --zone=public --add-port=3310/tcp --permanent
firewall-cmd --reload

firewall-cmd --zone=public --add-port=3311/tcp --permanent
firewall-cmd --reload

10.0.1在rancher創建mysql主從

10.1創建mysql映射的文件夾
mkdir -p /water/runfile/docker_volume/mysql8_cluster/3310/data
mkdir -p /water/runfile/docker_volume/mysql8_cluster/3310/conf

mkdir -p /water/runfile/docker_volume/mysql8_cluster/3311/data
mkdir -p /water/runfile/docker_volume/mysql8_cluster/3311/conf
上傳conf文件到對應的conf文件夾里

10.2在rancher里配置主mysql服務
mysql8ClusterM
192.168.232.140:5000/mysql:8.0.17 命名空間:default

3310 3310

3310 3306

增加環境變量
MYSQL_ROOT_PASSWORD=123456

主機調度:mysql=mysqlM
數據卷:掛載到遠程主機存儲路徑,選擇"使用現有PVC"
mysqlm-data
選擇pvc:nfs-pvc-redis(以前單redis創建的)
/var/lib/mysql mysql8_cluster/3310/data
/etc/mysql/my.cnf mysql8_cluster/3310/conf/my.cnf

高級選項 網絡:選擇主機網絡···這里不使用主機網絡,因為端口映射問題

啟動

10.3在rancher里配置從mysql服務
mysql8ClusterS
192.168.232.140:5000/mysql:8.0.17 命名空間:default
3311 3311

增加環境變量
MYSQL_ROOT_PASSWORD=123456

主機調度:mysql=mysqlS
數據卷:掛載到遠程主機存儲路徑,選擇"使用現有PVC"
mysqls-data
選擇pvc:nfs-pvc-redis(以前單redis創建的)
/var/lib/mysql mysql8_cluster/3311/data
/etc/mysql/my.cnf mysql8_cluster/3311/conf/my.cnf

高級選項 網絡:選擇主機網絡

啟動

10.4在linux shell獲取conf文件內容並將root登錄的范圍改成不限制ip
docker ps
docker exec -it 47da7da9f81d /bin/bash

修改root登錄范圍:
mysql -u root -p
123456
use mysql;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
flush privileges;

10.5使用數據庫連接工具進行連接,先連接主服務器的數據庫

依次執行
GRANT REPLICATION SLAVE ON . TO 'root'@'%';
flush privileges;
show master status;
可以看到主數據庫的狀態

10.6使用數據庫連接工具切換到從數據庫,依次執行
CHANGE MASTER TO
MASTER_HOST='192.168.232.141',
MASTER_PORT=3306,
MASTER_USER='root',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS=993;

這里的MASTER_LOG_FILE和MASTER_LOG_POS是上面show master status命令查出來的

start slave;

show slave status;

11.0創建spring-common配置jenkins里的打包
因為后面的項目開始引用這個公共包了
項目名稱springcloud-common
spring-base/spring-common/pom.xml
clean install -Dmaven.test.skip=true

保存 構建

11.1在jenkins創建springcloud-simple的maven項目
springcloud-simple
https://gitee.com/iwave/springcloud-docker-cluster.git
pom.xml
clean install -Dmaven.test.skip=true

點擊maven的高級按鈕

DEFAULT
Settings file 選擇文件系統中的settings文件
/var/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/jenkins-in-maven/conf/settings.xml

11.2創建spring-oauth的Dockerfile文件並配置jenkins里的打包
項目名稱springcloud-oauth
spring-oauth/pom.xml
clean package -Dmaven.test.skip=true

點擊maven的高級按鈕

DEFAULT
Settings file 選擇文件系統中的settings文件
/var/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/jenkins-in-maven/conf/settings.xml

執行shell->
cp /var/jenkins_home/workspace/springcloud-oauth/spring-oauth/src/main/docker/Dockerfile /var/jenkins_home/workspace/springcloud-oauth/spring-oauth/target/

Directory for Dockerfile->/var/jenkins_home/workspace/springcloud-oauth/spring-oauth/target/

Image->192.168.232.140:5000/spring-oauth
Clean local images勾選,推到私有倉庫后本地不留

11.3在rancher里創建oauth服務
在項目中復制docker文件夾及Dockerfile文件
spring-oauth
192.168.232.140:5000/spring-oauth
8002 8002
主機調度 deploy worker
高級選項 網絡 是否選用主機網絡選擇是,后台會在啟動時加上--net=host命令,表示不虛擬出網卡,不然erueka注冊ip有問題

配置linux本機的端口映射,網絡防火牆
firewall-cmd --zone=public --add-port=8002/tcp --permanent
firewall-cmd --reload

oauth部署成功

12.0在jenkins創建txlcn-tm項目和docker打包
先執行項目中的tx-manager.sql腳本

在jenkins里創建復制zuul項目的配置
項目名稱springcloud-txlcn-tm
txlcn-tm/pom.xml
clean package -Dmaven.test.skip=true

點擊maven的高級按鈕

DEFAULT
Settings file 選擇文件系統中的settings文件
/var/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/jenkins-in-maven/conf/settings.xml

執行shell->
cp /var/jenkins_home/workspace/springcloud-txlcn-tm/txlcn-tm/src/main/docker/Dockerfile /var/jenkins_home/workspace/springcloud-txlcn-tm/txlcn-tm/target/

Directory for Dockerfile->/var/jenkins_home/workspace/springcloud-txlcn-tm/txlcn-tm/target/

Image->192.168.232.140:5000/txlcn-tm
Clean local images勾選,推到私有倉庫后本地不留

12.1在rancher里創建txlcn-tm服務
txlcn-tm
192.168.232.140:5000/txlcn-tm
7970 7970
8070 8070
主機調度 deploy worker
高級選項 網絡 是否選用主機網絡選擇是,后台會在啟動時加上--net=host命令,表示不虛擬出網卡,不然erueka注冊ip有問題

配置linux本機的端口映射,網絡防火牆
firewall-cmd --zone=public --add-port=7970/tcp --permanent
firewall-cmd --zone=public --add-port=8070/tcp --permanent
firewall-cmd --reload

txlcn-tm部署成功

13.0在jenkins創建springcloud-spring-smallprogram-client項目和docker打包

在jenkins里創建復制zuul項目的配置
項目名稱springcloud-spring-smallprogram-client
spring-smallprogram-client/pom.xml
clean package -Dmaven.test.skip=true

點擊maven的高級按鈕

DEFAULT
Settings file 選擇文件系統中的settings文件
/var/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/jenkins-in-maven/conf/settings.xml

執行shell->
cp /var/jenkins_home/workspace/springcloud-spring-smallprogram-client/spring-smallprogram-client/src/main/docker/Dockerfile /var/jenkins_home/workspace/springcloud-spring-smallprogram-client/spring-smallprogram-client/target/

Directory for Dockerfile->/var/jenkins_home/workspace/springcloud-spring-smallprogram-client/spring-smallprogram-client/target/

Image->192.168.232.140:5000/spring-smallprogram-client
Clean local images勾選,推到私有倉庫后本地不留

13.1在rancher里創建spring-smallprogram-client服務
192.168.232.140:5000/spring-smallprogram-client
8005 8005
主機調度 deploy worker
高級選項 網絡 是否選用主機網絡選擇是,后台會在啟動時加上--net=host命令,表示不虛擬出網卡,不然erueka注冊ip有問題

配置linux本機的端口映射,網絡防火牆
firewall-cmd --zone=public --add-port=8005/tcp --permanent
firewall-cmd --reload

spring-smallprogram-client部署成功

https://www.jianshu.com/u/4f36546f7853

日志打印:
docker logs -f -t --tail 200 docker_id

按條件刪除鏡像
docker rmi --force docker images | grep 192.168.232.140:5000/spring-zuul | awk '{print $3}'
docker rmi --force docker images | grep 192.168.232.140:5000/spring-config | awk '{print $3}'

按條件刪除沒有tag的鏡像,就是tag的值是none的鏡像
docker images|grep none|awk '{print $3}'|xargs docker rmi

進入容器內部
docker attach 44fc0f0582d9
docker exec -it 44fc0f0582d9 /bin/bash
docker exec -it 44fc0f0582d9 /bin/sh

該指令默認只會清除懸空鏡像,未被使用的鏡像不會被刪除。
docker system prune
添加-a 或 --all參數后,可以一並清除所有未使用的鏡像和懸空鏡像
docker system prune -a

docker inspect 44fc0f0582d9

查看私有倉庫所有的鏡像 curl -XGET http://192.168.232.140:5000/v2/_catalog
curl -XGET http://192.168.232.140:5000/v2/鏡像名/tags/list

問題集:
1.刪除無法停止的容器
執行刪除命令無法刪除docker的目錄:
ll /var/lib/docker/containers | grep caf8ef20f3c1
cd /var/lib/docker/containers
rm -rf caf8ef20f3c1c78f03a5844ee23abc1d7e44246f242292040f1ef288899d0cb8

2.安裝時間同步插件
https://blog.csdn.net/vah101/article/details/91868147


免責聲明!

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



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