1. 程式人生 > 實用技巧 >docker+jenkins+rancher+k8s

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 [email protected]

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