99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

樹莓派Docker Compose全家桶:一鍵部署容器化服務(wù)器實(shí)戰(zhàn)

樹莓派Docker Compose全家桶:一鍵部署容器化服務(wù)器實(shí)戰(zhàn) 1. 為什么這篇要把全家桶整合當(dāng)成重頭戲樹莓派玩 Docker玩到第七篇很多東西已經(jīng)不是能不能跑的問題而是怎么跑得省心的問題。系列前面的文章分別處理了容器化 Nginx、數(shù)據(jù)庫容器化、存儲掛載、日志方案、反向代理與端口規(guī)劃這些單個模塊。每一塊單獨(dú)拆開看都能在樹莓派上穩(wěn)定運(yùn)行但真正把它們當(dāng)成一個完整的網(wǎng)頁服務(wù)器來使用時(shí)你會發(fā)現(xiàn)一個很現(xiàn)實(shí)的問題手動逐條執(zhí)行docker run去管理六個、八個甚至十幾個容器本身就是一種體力活而且特別容易出錯。這篇文章要做的就是把前幾篇拆散的零件重新組裝起來從一個完全純凈的樹莓派系統(tǒng)開始到 Docker 引擎就緒再到一套完整的網(wǎng)頁服務(wù)器容器全家桶通過一份docker-compose.yml編排好最后用一個部署腳本實(shí)現(xiàn)一條命令從零啟動整個服務(wù)集群。整個流程覆蓋了系統(tǒng)燒錄、基礎(chǔ)環(huán)境初始化、Docker 安裝與加速配置、鏡像規(guī)劃、容器編排、數(shù)據(jù)持久化、健康檢查與故障排查。這套方案適合誰如果你手里有一塊樹莓派 4B2GB 內(nèi)存以上版本想讓它承擔(dān)真實(shí)的網(wǎng)頁服務(wù)任務(wù)——不只是玩一個 Hello World 容器——同時(shí)又不想每次重啟或者搬家式遷移時(shí)手動敲十幾個docker run這篇文章就是給你準(zhǔn)備的。做完之后的體驗(yàn)大概就是TF 卡一插、上電、等幾分鐘整個服務(wù)棧自動拉起完全不需要盯屏幕輸命令。2. 純凈底座準(zhǔn)備從一張空白 TF 卡到可用的 Docker 主機(jī)2.1 系統(tǒng)鏡像選型64 位是底線先聊最容易被忽略但影響最大的決定操作系統(tǒng)鏡像。樹莓派 4B 的 CPU 是 Cortex-A7264 位架構(gòu)但很多教程還在推薦 32 位的 Raspberry Pi OS。如果是做桌面娛樂或者 GPIO 實(shí)驗(yàn)32 位問題不大但要做 Docker 化服務(wù)器直接上 64 位系統(tǒng)。原因很簡單Docker Hub 上大量的官方鏡像已經(jīng)以arm64為主推架構(gòu)你用 32 位系統(tǒng)拉arm/v7版本也不是不行但很多鏡像的arm/v7構(gòu)建已經(jīng)進(jìn)入維護(hù)甚至停止更新狀態(tài)。比如 MySQL 8.x 的官方鏡像對arm/v7的支持明顯沒有arm64積極。另一個現(xiàn)實(shí)問題是樹莓派 4B 的 4GB 內(nèi)存版本搭配 32 位系統(tǒng)時(shí)單個進(jìn)程可尋址內(nèi)存受限跑數(shù)據(jù)庫或者構(gòu)建鏡像時(shí)總覺得憋屈。我推薦兩個方案發(fā)行版優(yōu)點(diǎn)缺點(diǎn)適用場景Raspberry Pi OS Lite64位官方維護(hù)、驅(qū)動最穩(wěn)、社區(qū)資料最多軟件包版本偏保守大多數(shù)人的首選Ubuntu Server for Raspberry Pi64位內(nèi)核較新、軟件包新、Docker 兼容性極好驅(qū)動偶爾有小問題想緊跟新特性、跑較新容器鏡像的人我個人更傾向于 Ubuntu Server。原因是 Docker 官方安裝腳本對 Ubuntu 的適配最成熟遇到問題時(shí)排查資料也更多。但如果你對 Raspberry Pi OS 更熟悉Lite 版完全夠用只要確定下載的是 64 位鏡像。2.2 燒錄與開機(jī)初始化頭十分鐘決定后面順不順利燒錄環(huán)節(jié)官方出的 Raspberry Pi Imager 是目前最省事的工具。它現(xiàn)在支持直接在燒錄時(shí)預(yù)設(shè) SSH 開關(guān)、用戶名密碼、Wi-Fi 信息這一步非常關(guān)鍵——省去了無頭模式下必須接顯示器和鍵鼠才能開 SSH 的尷尬。具體操作打開 Raspberry Pi Imager選擇鏡像選 64 位 Lite 或 Ubuntu Server。選擇 TF 卡建議 32GB 以上16GB 裝完系統(tǒng)加幾個鏡像就捉襟見肘。點(diǎn)擊右下角設(shè)置按鈕提前寫入開啟 SSH允許密碼登錄或配置公鑰指定主機(jī)名比如rpisrv設(shè)置用戶pi的密碼配置 Wi-Fi如果走無線或者直接插網(wǎng)線燒錄完成后TF 卡插入樹莓派上電等一兩分鐘。上電后第一步是找到樹莓派的 IP。最簡單的方法是在路由器后臺看 DHCP 客戶端列表或者用ping rpisrv.local如果網(wǎng)絡(luò)支持 mDNS。連上 SSH 后先做三件事改源、更新系統(tǒng)、檢查固件。改源這件事很多人教條式地照抄網(wǎng)上的代碼塊結(jié)果換完發(fā)現(xiàn)源和目標(biāo)系統(tǒng)對不上。Raspberry Pi OS 和 Ubuntu 的源格式不同Debian 系里又分 bookworm、bullseye、noble、jammy 等版本代號抄錯了輕則更新慢重則直接apt update報(bào)錯。正確做法是先看系統(tǒng)版本文件cat /etc/os-release lsb_release -cs # 看代號然后根據(jù)代號去配對應(yīng)國內(nèi)鏡像站的源。這一步做完apt update和apt upgrade的速度會有質(zhì)的提升后續(xù)裝任何軟件都不至于卡在下載上。系統(tǒng)更新完重啟一次然后進(jìn)入固件配置sudo raspi-config需要動的地方只有兩處一是Advanced Options - Expand Filesystem雖然新版本系統(tǒng)鏡像默認(rèn)會自動擴(kuò)容但確認(rèn)一下沒有壞處二是如果不需要桌面環(huán)境確保 boot 到命令行模式。另外建議把 GPU 內(nèi)存調(diào)低到 16MBPerformance Options - GPU Memory這臺機(jī)器如果純做服務(wù)器GPU 完全用不上省下的內(nèi)存給容器更劃算。2.3 基礎(chǔ)軟件包與目錄規(guī)劃系統(tǒng)就緒后裝一些后面會用到的工具。這一步不需要太多夠用就好sudo apt update sudo apt upgrade -y sudo apt install -y curl wget git vim net-tools htop目錄規(guī)劃這里我先說一個超出常規(guī)教程的思路不要把數(shù)據(jù)直接散落在~/或者/opt里而是建立一個獨(dú)立的目錄結(jié)構(gòu)把應(yīng)用代碼、容器配置、數(shù)據(jù)卷、備份全部歸類放好。我習(xí)慣在樹莓派上用這個布局/srv/server/ ├── apps/ │ ├── nginx/ │ ├── mysql/ │ ├── redis/ │ └── monitor/ ├── compose/ │ └── docker-compose.yml ├── scripts/ │ └── deploy.sh └── backups//srv是 Linux 中專門給服務(wù)數(shù)據(jù)的目錄語義清晰也不容易被誤清理。這套目錄結(jié)構(gòu)會和后面的整個方案綁定后續(xù)所有路徑映射都以這里為根。3. Docker 引擎與鏡像加速ARM 平臺最容易翻車的地方3.1 Docker Engine 安裝不走 Docker Desktop 路線樹莓派上不要裝 Docker Desktop它面向的是桌面環(huán)境且需要額外的虛擬機(jī)層。我們要的是純粹的 Docker Engine 加 Compose 插件。安裝方式我推薦用 Docker 官方腳本簡單直接curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh腳本會自動識別系統(tǒng)架構(gòu)和發(fā)行版把 Docker Engine、containerd、Compose 插件一起裝好。裝完把用戶加入 docker 組省得每次敲sudosudo usermod -aG docker $USER newgrp docker驗(yàn)證安裝docker --version docker compose version一個容易被忽略的點(diǎn)docker compose帶空格v2 插件和docker-compose帶橫線v1 獨(dú)立二進(jìn)制是兩回事。新版 Docker 官方推薦用前者。網(wǎng)上大量舊教程還在要求你apt install docker-compose裝出來的是一個老版本 Python 實(shí)現(xiàn)不僅語法支持不全性能也差一截。請認(rèn)準(zhǔn)docker compose命令。3.2 鏡像加速配置讓拉取速度回歸正常這一步在國內(nèi)網(wǎng)絡(luò)環(huán)境下幾乎是必修課。樹莓派在國內(nèi)用默認(rèn) Docker Hub 拉鏡像速度經(jīng)常讓人懷疑 SD 卡是不是壞了。配置鏡像加速器的原理不復(fù)雜Docker 在拉鏡像時(shí)會先訪問daemon.json里配置的 registry mirror這些加速器相當(dāng)于 Docker Hub 的緩存節(jié)點(diǎn)。配置文件位置在/etc/docker/daemon.json如果不存在就新建一個{ registry-mirrors: [ https://docker.m.daocloud.io, https://dockerproxy.com, https://docker.nju.edu.cn ], log-driver: json-file, log-opts: { max-size: 10m, max-file: 3 }, data-root: /var/lib/docker }這里同時(shí)做了一件非常重要的事日志限額配置。樹莓派的 TF 卡空間有限容器如果持續(xù)輸出日志默認(rèn)情況下/var/lib/docker/containers/xxx/xxx-json.log會無限增長。曾經(jīng)見過一個跑了半年 Nginx 的容器日志文件膨脹到 7GB 直接寫滿 TF 卡。限定單個日志文件 10MB、最多保留 3 份基本保證日志不會成為容量殺手。配置完重啟 Dockersudo systemctl restart docker sudo systemctl enable docker # 開機(jī)自啟enable這一步值得強(qiáng)調(diào)。樹莓派經(jīng)常因?yàn)橥k?、誤碰電源等原因意外關(guān)機(jī)如果 Docker 服務(wù)沒有設(shè)為自啟重啟之后全家桶不會自動回來等你 SSH 上去才發(fā)現(xiàn)在裸奔。3.3 ARM 平臺的鏡像拉取細(xì)節(jié)樹莓派 4B 裝 64 位系統(tǒng)后Docker 默認(rèn)拉取arm64鏡像。大多數(shù)情況下你不需要手動指定平臺。但有一個場景會踩坑某些鏡像只有amd64版本或者開發(fā)者只發(fā)布了linux/arm/v7沒有arm64。遇到這種情況Docker 會嘗試通過模擬運(yùn)行amd64容器性能會打折扣甚至直接失敗。我的建議是在選擇鏡像時(shí)養(yǎng)成看架構(gòu)標(biāo)簽的習(xí)慣。Docker Hub 上每個鏡像的 Tags 頁面都能看到不同架構(gòu)的 digest。如果你不確定某個鏡像是否支持arm64可以用docker manifest inspect快速查看docker manifest inspect mysql:8.0 | grep architecture這個方法不實(shí)際拉取鏡像就能看到支持的架構(gòu)列表選鏡像前花十秒鐘檢查一下能避免啟動之后才發(fā)現(xiàn)鏡像不兼容的尷尬。4. 全家桶陣容規(guī)劃網(wǎng)頁服務(wù)器周邊到底需要哪些容器4.1 我的全家桶組成與選型邏輯一套能承擔(dān)真實(shí)業(yè)務(wù)的網(wǎng)頁服務(wù)器顯然不可能只有 Nginx 一個容器。結(jié)合樹莓派的硬件條件4 核 CPU、4GB 內(nèi)存我最終定下的全家桶陣容是這樣容器鏡像作用端口內(nèi)存占用實(shí)測nginxnginx:stable-alpine前端入口反向代理80/443約 40MBmysqlmysql:8.0業(yè)務(wù)數(shù)據(jù)庫3306僅內(nèi)網(wǎng)約 280MBredisredis:7-alpine緩存、會話6379僅內(nèi)網(wǎng)約 60MBportainerportainer/portainer-ce:latestDocker 可視化管理9000內(nèi)網(wǎng)約 80MBwatchtowercontainrrr/watchtower:latest容器鏡像自動更新無約 25MBcadvisorgcr.io/cadvisor/cadvisor:latest容器資源監(jiān)控8080內(nèi)網(wǎng)約 100MB為什么選這幾個而不是更多我在規(guī)劃時(shí)有一個鐵律樹莓派上的容器數(shù)量寧少勿多。每一個容器背后都是一個常駐進(jìn)程都有內(nèi)存開銷和日志寫入。2GB 內(nèi)存版本如果硬上 Elasticsearch 全家桶Kafka啟動階段就能把 swap 吃爆。我的 4GB 版本跑這套陣容系統(tǒng)加容器整體內(nèi)存占用約 1.8GB還有一半余量這算是一個比較健康的水平。鏡像選型也有講究Nginx 用alpine版本體積小、攻擊面小MySQL 用官方8.0而不是latest因?yàn)閘atest的 tag 可能隨著大版本升級而漂移到時(shí)候自動更新一跑數(shù)據(jù)庫從 8.0 跳到了 8.4兼容性問題會讓人措手不及。固定主版本號是數(shù)據(jù)庫類容器的基本素養(yǎng)。4.2 為什么非要用 Portainer管理員的理智選擇有人會說命令行本來就能管理 Docker為什么非要加一個 Portainer我的回答是樹莓派服務(wù)器不是只服務(wù)你一個人。部署完一個完整系統(tǒng)之后如果家里其他人也想看服務(wù)狀態(tài)、重啟某個出問題的容器你不可能讓每個人都去學(xué)docker ps和docker logs。Portainer 提供的圖形界面讓整個管理過程變得幾乎是零門檻。另外Portainer 的 Stacks 功能原生支持 docker-compose可以直接用圖形界面管理整套 Stack 的啟停和更新和本文后面要寫的部署腳本不沖突——腳本負(fù)責(zé)首次部署Portainer 負(fù)責(zé)日常運(yùn)維。這種腳本初始化 面板管理的組合拳是我試出來的最佳配合。4.3 內(nèi)存預(yù)算與 Swap 策略4GB 內(nèi)存看著不小但 MySQL 默認(rèn)配置能吃掉大量內(nèi)存去做 buffer pool。樹莓派上必須對 MySQL 做內(nèi)存約束。用 Docker 的方式可以通過command參數(shù)覆蓋 MySQL 的啟動配置command: --innodb-buffer-pool-size256M --max-connections50 --performance-schemaOFFmax-connections從默認(rèn)的 151 降到 50對家庭級應(yīng)用綽綽有余performance-schema關(guān)閉能省掉約 200MB 內(nèi)存開銷。這是樹莓派上跑 MySQL 最值得做的兩個調(diào)整。Swap 方面樹莓派實(shí)際跑這套方案時(shí)內(nèi)存峰值可能沖到 2.5GB 左右剩余空間已經(jīng)不太從容。建議在系統(tǒng)層面加 2GB 的 swapfile防止瞬時(shí)內(nèi)存尖峰直接把進(jìn)程殺掉。開啟后free -h能看到 swap 總量變成 2GB 以上。注意把vm.swappiness設(shè)小一點(diǎn)比如 10讓系統(tǒng)優(yōu)先用物理內(nèi)存swap 只兜底。5. docker-compose 編排把容器依賴關(guān)系和數(shù)據(jù)持久化理清楚5.1 compose 文件的核心結(jié)構(gòu)所有容器最終通過一份docker-compose.yml統(tǒng)一管理放在/srv/server/compose/下。這是全家桶整合的核心文件我直接給出完整內(nèi)容并逐段說明services: nginx: image: nginx:stable-alpine container_name: web-nginx restart: always ports: - 80:80 - 443:443 volumes: - /srv/server/apps/nginx/conf.d:/etc/nginx/conf.d:ro - /srv/server/apps/nginx/html:/usr/share/nginx/html:ro - /srv/server/apps/nginx/logs:/var/log/nginx - /srv/server/apps/nginx/cert:/etc/nginx/cert:ro networks: - webnet depends_on: - mysql - redis healthcheck: test: [CMD, wget, -q, --spider, http://localhost/healthz] interval: 30s timeout: 5s retries: 3 start_period: 10s mysql: image: mysql:8.0 container_name: web-mysql restart: always command: --innodb-buffer-pool-size256M --max-connections50 --character-set-serverutf8mb4 --collation-serverutf8mb4_unicode_ci environment: MYSQL_ROOT_PASSWORD: 換成強(qiáng)密碼 MYSQL_DATABASE: webapp MYSQL_USER: webuser MYSQL_PASSWORD: 換成強(qiáng)密碼 TZ: Asia/Shanghai volumes: - /srv/server/apps/mysql/data:/var/lib/mysql networks: - webnet healthcheck: test: [CMD, mysqladmin, ping, -h, localhost, -u, root, -p換成root密碼] interval: 30s timeout: 5s retries: 5 redis: image: redis:7-alpine container_name: web-redis restart: always command: redis-server --appendonly yes --maxmemory 128mb --maxmemory-policy allkeys-lru volumes: - /srv/server/apps/redis/data:/data networks: - webnet healthcheck: test: [CMD, redis-cli, ping] interval: 30s timeout: 5s retries: 3 portainer: image: portainer/portainer-ce:latest container_name: web-portainer restart: always ports: - 9000:9000 volumes: - /var/run/docker.sock:/var/run/docker.sock - /srv/server/apps/portainer/data:/data networks: - webnet watchtower: image: containrrr/watchtower:latest container_name: web-watchtower restart: always environment: WATCHTOWER_CLEANUP: true WATCHTOWER_SCHEDULE: 0 0 4 * * * WATCHTOWER_TIMEOUT: 30s volumes: - /var/run/docker.sock:/var/run/docker.sock networks: - webnet cadvisor: image: gcr.io/cadvisor/cadvisor:latest container_name: web-cadvisor restart: always ports: - 8080:8080 volumes: - /:/rootfs:ro - /var/run:/var/run:ro - /sys:/sys:ro - /var/lib/docker:/var/lib/docker:ro - /cgroup:/cgroup:ro networks: - webnet networks: webnet: driver: bridge5.2 網(wǎng)絡(luò)模式選擇為什么統(tǒng)一橋接到 webnet這里有一個前面系列文章已經(jīng)詳細(xì)拆解過、但值得再強(qiáng)調(diào)的設(shè)計(jì)所有容器放在同一個自定義 bridge 網(wǎng)絡(luò)webnet中并且只有 Nginx、Portainer、cAdvisor 對外開放端口。這個設(shè)計(jì)帶來三個直接好處。第一MySQL 和 Redis 不暴露宿主機(jī)端口外部無法直接訪問數(shù)據(jù)庫降低被掃描攻擊的風(fēng)險(xiǎn)。第二Nginx 可以通過容器名直接訪問 MySQL 和 Redis比如 PHP 應(yīng)用里配置數(shù)據(jù)庫主機(jī)名直接寫mysql而不是 IPDocker 內(nèi)置 DNS 會處理解析。第三端口沖突問題徹底消失不需要為每個容器手動規(guī)劃一個非標(biāo)準(zhǔn)宿主機(jī)端口。如果你想過用network_mode: host來獲得更好性能在樹莓派上其實(shí)沒必要。bridge 網(wǎng)絡(luò)模式在 Docker 內(nèi)部的性能損耗非常小而 host 模式會帶來端口沖突風(fēng)險(xiǎn)甚至可能和系統(tǒng)自身的 80 端口搶占。除非遇到極端性能需求一律用 bridge 加自定義網(wǎng)絡(luò)。5.3 數(shù)據(jù)持久化volume 和 bind mount 的使用邊界在這套方案里我用了兩種不同的掛載方式使用邊界很明確bind mount直接映射宿主機(jī)目錄用于需要直接查看、修改、拷貝的數(shù)據(jù)。Nginx 的 HTML 目錄、配置目錄、證書目錄用 bind mount因?yàn)槟憧赡芤?jīng)常直接編輯文件MySQL 數(shù)據(jù)目錄也用 bind mount方便備份時(shí)直接tar整個目錄。named volumeDocker 管理卷適合不想直接碰、只由容器讀寫的數(shù)據(jù)。如果某個服務(wù)的數(shù)據(jù)對宿主機(jī)透明性要求低應(yīng)該用 named volume。比如 Portainer 的數(shù)據(jù)目錄雖然寫成了 bind mount但其實(shí)用 named volume 會更好因?yàn)樗臄?shù)據(jù)目錄內(nèi)部結(jié)構(gòu)很復(fù)雜沒有直接操作的需求bind mount 還可能帶來文件權(quán)限和 SELinux 方面的小問題。MySQL 數(shù)據(jù)目錄用 bind mount 時(shí)需要注意權(quán)限容器內(nèi)的mysql用戶和宿主機(jī)的uid/gid并不一致直接映射后經(jīng)常出現(xiàn)Permission denied。解決方案是在掛載前手動設(shè)置目錄所有者sudo mkdir -p /srv/server/apps/mysql/data sudo chown -R 999:999 /srv/server/apps/mysql/data999 是 MySQL 官方鏡像中mysql用戶的 uid。這個細(xì)節(jié)能避免首次啟動時(shí)報(bào) Cant open file 的尷尬。6. 一鍵部署腳本從手動拉鏡像到一條命令收工6.1 部署腳本要覆蓋的完整階段compose 文件寫好后剩下的事情就是寫一個一鍵部署腳本。這個腳本的意義在于面對一臺全新的樹莓派只需要執(zhí)行一條命令就能完成環(huán)境檢查、目錄初始化、配置校驗(yàn)、拉鏡像、啟動服務(wù)、健康檢查的完整流程。腳本我放在/srv/server/scripts/deploy.sh整體結(jié)構(gòu)分六個階段。這里我按階段拆開講每個階段都有獨(dú)立函數(shù)方便出了問題單獨(dú)執(zhí)行。階段一環(huán)境預(yù)檢。腳本跑起來先檢查系統(tǒng)架構(gòu)、Docker 是否可用、端口是否被占用check_environment() { echo [1/6] 檢查運(yùn)行環(huán)境 arch$(uname -m) if [ $arch ! aarch64 ] [ $arch ! armv7l ]; then echo 錯誤非 ARM 架構(gòu)腳本僅適用于樹莓派 exit 1 fi if ! command -v docker /dev/null 21; then echo 錯誤Docker 未安裝請先完成 Docker 引擎安裝 exit 1 fi if ! docker compose version /dev/null 21; then echo 錯誤Docker Compose 插件未安裝 exit 1 fi echo 環(huán)境檢查通過架構(gòu) $archDocker 已安裝 }階段二目錄初始化。把整個/srv/server目錄結(jié)構(gòu)在當(dāng)前機(jī)器上補(bǔ)齊init_dirs() { echo [2/6] 初始化目錄結(jié)構(gòu) mkdir -p /srv/server/{apps/{nginx/{conf.d,html,logs,cert},mysql/data,redis/data,portainer/data},compose,scripts,backups} if [ ! -d /srv/server/apps/mysql/data ]; then echo MySQL 數(shù)據(jù)目錄不存在開始創(chuàng)建 mkdir -p /srv/server/apps/mysql/data chown -R 999:999 /srv/server/apps/mysql/data fi if [ ! -d /srv/server/apps/redis/data ]; then mkdir -p /srv/server/apps/redis/data chown -R 999:999 /srv/server/apps/redis/data fi echo 目錄結(jié)構(gòu)就緒 }階段三配置文件生成。如果 Nginx 的conf.d里還沒有默認(rèn)站點(diǎn)配置腳本順手生成一份最小可用的反向代理配置讓它能轉(zhuǎn)發(fā)到webapp容器假設(shè)業(yè)務(wù)應(yīng)用跑在另一個容器里。這一步的邏輯是不要假設(shè)每一臺新機(jī)器上都已經(jīng)有完整配置部署腳本要能在零配置的前提下生成一份可運(yùn)行的最小配置后續(xù)再手動覆蓋。generate_nginx_conf() { echo [3/6] 生成 Nginx 基礎(chǔ)配置 if [ ! -f /srv/server/apps/nginx/conf.d/default.conf ]; then cat /srv/server/apps/nginx/conf.d/default.conf EOF server { listen 80; server_name _; location / { proxy_pass http://webapp:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } EOF fi echo Nginx 配置生成完畢 }階段四拉取鏡像。手動觸發(fā)docker compose pull提前把所有鏡像拉到本地。這一步雖然up也會自動拉但單獨(dú)跑一次的好處是錯誤信息更清晰可以逐鏡像排查拉取失敗的原因。階段五啟動服務(wù)。用--wait參數(shù)等待 compose 服務(wù)完全啟動start_services() { echo [5/6] 啟動服務(wù)棧 cd /srv/server/compose docker compose pull docker compose up -d --wait }--wait是 Docker Compose v2 的一個實(shí)用特性它會阻塞直到所有配置了 healthcheck 的服務(wù)通過健康檢查。這樣腳本可以在下一步判斷服務(wù)是否真正就緒而不是只看到容器啟動了。階段六輸出訪問清單。腳本跑完后把服務(wù)地址、需要手動進(jìn)行的后續(xù)步驟列出來省得部署完還要去翻筆記回憶端口。這一步雖然簡單但在實(shí)際使用中非常提升體驗(yàn)——尤其是在樹莓派 IP 變化后腳本輸出能直接看到當(dāng)前機(jī)器的所有訪問入口。6.2 冪等性設(shè)計(jì)重復(fù)執(zhí)行不踩雷部署腳本最容易被人忽視的需求是冪等性。什么叫冪等就是同一個腳本在同一臺機(jī)器上執(zhí)行兩次、三次結(jié)果都正確不會因?yàn)橹貜?fù)執(zhí)行導(dǎo)致數(shù)據(jù)被覆蓋、目錄被重建、配置被重置。我在這份腳本里做了三處冪等保護(hù)目錄創(chuàng)建使用mkdir -p目錄已存在時(shí)靜默跳過不會報(bào)錯。Nginx 配置只在文件不存在時(shí)生成再次執(zhí)行不會覆蓋已有配置。MySQL 數(shù)據(jù)目錄的所有者修改只執(zhí)行一次如果目錄已經(jīng)存在且所有者正確chown不會造成額外影響。為什么要做冪等因?yàn)椴渴鹉_本不只是新裝機(jī)用的。你在日常使用中改了某一個容器的環(huán)境變量或者調(diào)整了 compose 文件里的某個卷映射會想重新執(zhí)行一遍部署腳本讓改動生效。如果腳本不具備冪等性第二次執(zhí)行可能就是一場災(zāi)難——目錄會被重建配置文件會被重置數(shù)據(jù)目錄權(quán)限可能會變得混亂。6.3 健康檢查與自檢邏輯Compose 文件里我們已經(jīng)給每個有檢測能力的服務(wù)配置了healthcheck。部署腳本的最后一階段就是對健康檢查結(jié)果做匯總判斷。一個實(shí)用的自檢函數(shù)長這樣check_health() { echo 服務(wù)健康狀態(tài)匯總 failed0 for container in web-nginx web-mysql web-redis web-portainer; do status$(docker inspect --format{{.State.Health.Status}} $container 2/dev/null || echo status: not found) if [ $status healthy ]; then echo $container: healthy else echo $container: $status failed1 fi done if [ $failed -eq 0 ]; then echo 所有服務(wù)健康檢查通過 else echo 存在異常服務(wù)請檢查 docker logs container_name 查看原因 exit 1 fi }這段腳本的價(jià)值在于它把容器在跑和服務(wù)可用區(qū)分開。一個容器進(jìn)程雖然活著但內(nèi)部的應(yīng)用可能還在啟動中或者已經(jīng)崩潰重啟。通過健康檢查判斷比單純看docker ps輸出更可靠。有時(shí)候docker inspect查出來的健康狀態(tài)會是starting這通常意味著start_period時(shí)間還不夠等服務(wù)內(nèi)部程序完全就緒后會變healthy。7. 實(shí)測與排障全家桶跑起來后遇到的真實(shí)問題7.1 啟動耗時(shí)與資源占用實(shí)測這套方案在樹莓派 4B4GB 版本Ubuntu Server 24.04TF 卡為 A2 規(guī)格上的表現(xiàn)我做了完整的實(shí)測記錄。首次部署需要拉取全部鏡像總耗時(shí)約 12 分鐘其中鏡像拉取占大頭MySQL 8.0 鏡像約 150MB在加速器正常情況下兩分鐘內(nèi)能拉完。后續(xù)啟動鏡像已緩存從執(zhí)行部署腳本到所有服務(wù)healthy實(shí)測約 55 秒。主要等待在于 MySQL 的初始化和健康檢查通過需要時(shí)間。內(nèi)存占用的真實(shí)分布總內(nèi)存 3.8GB4GB 減掉 GPU 預(yù)留 系統(tǒng)基礎(chǔ)進(jìn)程約 300MB Docker 各容器約 1.1GB - 1.3GB 緩存與余量約 2.2GB一次正常的業(yè)務(wù)高峰并發(fā) 20 個請求打 Nginx同時(shí)讀寫 MySQLCPU 使用率在 30%~50% 之間空閑時(shí)幾乎為 0溫度穩(wěn)定在 52°C 左右前提是加了一個幾十塊的鋁制散熱殼。如果你的樹莓派還是裸板加小散熱片建議跑這套方案前先把散熱問題解決MySQL 在高溫下會明顯降速。7.2 三次典型故障的完整排查鏈路好消息是這套方案穩(wěn)定跑了大半年壞消息是過程中踩過三個值得記錄的坑每個都花了不少時(shí)間定位。故障一重啟后 MySQL 起不來報(bào)錯指向數(shù)據(jù)目錄權(quán)限?,F(xiàn)象是樹莓派斷電重啟后docker compose up -d后 MySQL 容器一直在restarting狀態(tài)docker logs web-mysql看到[ERROR] Cant open file /var/lib/mysql/ibdata1 ... Permission denied。排查過程先查掛載目錄的所有者ls -ln /srv/server/apps/mysql/data發(fā)現(xiàn)數(shù)據(jù)目錄的所有者變成了1000宿主機(jī)第一個用戶的 uid。原因是我后來用rsync從舊 SD 卡遷移數(shù)據(jù)時(shí)tar 解包覆蓋了原有的所有權(quán)信息。修復(fù)方式是重新執(zhí)行chown -R 999:999 /srv/server/apps/mysql/data。這個坑讓我意識到一個經(jīng)驗(yàn)bind mount 目錄的權(quán)限信息是部署容器的隱藏依賴任何涉及目錄遷移的操作之后必須檢查并恢復(fù)所有者和權(quán)限。故障二Portainer 和 cAdvisor 容器內(nèi)能看到 Docker sock 掛載但界面無數(shù)據(jù)?,F(xiàn)象是 Portainer 可以連接但容器資源使用圖表全部空白cAdvisor 能訪問但指標(biāo)頁面報(bào)錯。排查發(fā)現(xiàn)兩個容器都掛載了/var/run/docker.sock但 cAdvisor 還需要額外掛載宿主機(jī)的根目錄、sys 目錄、cgroup 目錄才能采集到資源指標(biāo)。compose 文件里漏掉了/sys和根目錄映射導(dǎo)致數(shù)據(jù)采集失效。補(bǔ)齊卷映射后一切正常。這個問題的教訓(xùn)是某些容器的資源監(jiān)控類功能不僅依賴 Docker API還依賴宿主機(jī)文件系統(tǒng)的直接訪問掛載不全時(shí)功能會靜默降級不會直接報(bào)錯。故障三Watchtower 自動更新把 MySQL 從 8.0 拉到了 8.4。現(xiàn)象是某天早上發(fā)現(xiàn)業(yè)務(wù)報(bào)錯數(shù)據(jù)庫連不上。查日志發(fā)現(xiàn) watchtower 夜里自動拉取了 MySQL 鏡像的 latest tag然后重建了容器導(dǎo)致原本跑在 8.0 上的數(shù)據(jù)目錄被 8.4 識別時(shí)出現(xiàn)了不兼容問題。這個坑的根源在我的 compose 文件里image: mysql:8.0這個 tag 雖然指定了主版本但 watchtower 仍然會檢查這個 tag 指向的最新 digest只要官方把 8.0 系列的基礎(chǔ)鏡像重新構(gòu)建它就會拉下來替換。修復(fù)方案有兩種一是給 watchtower 配置WATCHTOWER_LABEL_ENABLEtrue然后在敏感容器上加com.centurylinklabs.watchtower.enablefalse標(biāo)簽二是干脆不用 watchtower 更新數(shù)據(jù)庫類容器只讓它更新 Nginx 這類無狀態(tài)服務(wù)。我最終選擇了后者數(shù)據(jù)庫這種有狀態(tài)服務(wù)的更新必須人工介入評估。7.3 性能調(diào)優(yōu)與日常維護(hù)的幾個小參數(shù)跑穩(wěn)定之后我做了幾處水磨工夫的調(diào)優(yōu)每項(xiàng)改動都不大但日積月累對 TF 卡壽命和系統(tǒng)穩(wěn)定性幫助很明顯。一是 Docker 數(shù)據(jù)目錄不要放在根分區(qū)。TF 卡的根分區(qū)空間本就有限鏡像層、日志、容器可寫層全都堆在/var/lib/docker里時(shí)間長了容易把根分區(qū)塞滿。如果你的樹莓派掛了一塊移動硬盤或者 SSD把>0 3 * * 1 docker image prune -f docker container prune -f注意不要用docker system prune -a那是無差別清理所有未使用的鏡像會把本地構(gòu)建但暫時(shí)沒跑的鏡像也刪掉。文章寫到這里從系統(tǒng)底座、Docker 引擎、鏡像規(guī)劃、Compose 編排到一鍵部署腳本和排障復(fù)盤一套完整流程已經(jīng)擺在面前。套用我在實(shí)際使用中養(yǎng)成的一個習(xí)慣每次新裝一套機(jī)器跑完部署腳本后立刻把腳本和 compose 文件備份到 U 盤或者云盤一份。樹莓派壞卡換新卡恢復(fù)到可用狀態(tài)只需要燒錄系統(tǒng)、執(zhí)行腳本、等完健康檢查三件事。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
久久久精品99| 男人综合网| 这里只有精品视频| 婷婷五月色色| 婷婷五月av| 9久久婷婷国产综合精品性色| 日欧一片内射VA在线影院| 亚洲人妻电影| 色色亚洲五月天| 欧美va国产va| 久思思久视频| 99精品自拍| 99久99久| www.金莲av| 色~性~乱~伦~噜| 2w在线视频| 色色丁香五月天| 99精品丰满| 思思久久精品| av色色国产| 激情综合丁香五月| 欧美成人精品一区二区| 午夜激情五月| 色五月丁香六月婷婷| 五月婷婷啪啪| 五月丁婷香| 天天综合91入口| 成人做爰高潮A片免费视频| 亚洲综合草草| 色99在线视频| 五月丁香色综合| 97碰碰人人| 九九婷婷五月天| 色五月aV| 五月婷婷六月婷| 婷婷五月天,影院| 五月天亚洲图片婷婷| 色噜噜夜夜夜综合网| 婷婷五月在线| 色婷婷综合成人| 婷久久综合| 色.五月综合网| 亚洲综合五月天婷婷丁香| 婷婷久久精品| 丁香五月在线观看| XX色综合| 碰超在线九色| 激情久久久久| 丁香五月天婷婷久久综合| 天天日天天添| 玖玖九九99| 激情六月综合| 亚洲精品白浆高清久久久久久 | 能看的av网站| 色婷婷激情| 91九色中文字幕女在线观看| 99热超碰| 亚洲深喉aV| 大伊香蕉精品视频在线| 丁香五月天激情婷婷丁香六月| 久久色五月| 色播播婷婷| 五月丁香六月婷婷久久| 色综合久久88色综合天天99| 五月婷婷啪啪| 九九九干精品| 五月天综合久久丁香91| 五月丁香爱婷婷深深| 激情宗合哪里能看| 九九亚洲视频| 99在线公开视频| www.婷婷.com| 成人深爱丁香五月| 五月天天爽| 天天干天天干天天干天天干天| 五月天色裸体视频| 婷婷亚洲综合| 成人婷婷色综合| 五月开心网| A久久| 色色99| 激情99| chaopengdaxiangjiao| 久久天堂女人| 婷婷金品综合视频| 婷婷色色欧美综合网| 91久久人人操| 综合久久婷婷五月丁香| 五月天停停成人网| 精品激情| 影音先锋男人AV资源站| 色区久久| 亚洲成人五月| 日韩成人中文| www.五月婷婷| 婷婷五月综合视频| 五月婷婷之综合激情| 99国产精品久久久久久久久久久| 91大神操美女| 天天久| 激情综合网五月激情| 天天爽天天爽| 97影院一级片| 日韩av网址大全| 婷婷综合网性| 丁香5月婷婷| 久久九九99| 日本V在线观看不卡视频网站| 99免费偷拍视频| 99色色爰| 婷婷综合色图| 97香蕉人人在线观看| 91人人爽狠狠狠| 五月婷婷开心亚州在线| 国产露脸150部国语对白| 精品无码片| a网站免费观看| A网在线欧洲| 日韩无码专区| 六月婷久久| 婷婷网五月| 综合色图区| 午夜激情久久| 天天干天天射色综合| 亚洲综合色婷婷| 97人人干视频| 五月天婷婷青青草| 夜夜www| 久热黄色| 国产色网站| 九九热经典视频在线观看| 亚洲激情综合| 狠狠大香婷婷爱| 丁香在线视频| 六月久久婷婷| 丁香婷婷色| 中文字幕91,综合| 五月天久久成人| 天天干天天操天天拍| 日本三级日本三级三级人妇四虎| 操操自拍| 六月丁香婷| 26uuu丁香婷婷五月| 99精彩视频网站在线| 二色AV| 亚洲美女网Va| 91丨九色丨熟女|新版| 久久a热| 97男人天堂| 开心色播色五月婷婷| 中文字幕丰满孑伦无码专区| www.热99热| 国产精品人成A片一区二区| site:pzdcoin.com| 亚洲国产精品VA在线看黑人| 99热这里只有在线| 91九色视频在线观看| 天天干天天操天天爽| 久久激情四射| 97超碰综合| 99热都是精品| 久热在线中文字幕色999舞| 风流少妇A片一区二区蜜桃 | 丁香五月精品| 99九九热视频| 久久久久久人妻| 秋霞三级色戒| 久久久久久久91| 色999;丁香五月| 中国女人做爰A片| 色五月丁香激情视频| 青草青草视频2免费观看| 99热这里只有在线播放| 五月激情婷婷偷拍| 久久久18| 亚洲人人操BD| 99视频35精品视频在线观看| 专区无日本视频高清8| 先锋男人99资源| 国产亚洲99久久精品熟| 成人 视频免费观看网站| 高清视频一区| 五月激香蕉网| 色色色色五月| 伊人五月成人| 97久久视频| 欧美激情性做爰免费视频| 99热精品一区| 2017狠狠干| 五月婷婷久久久| 五月婷婷六月丁香在线| 国产乱妇乱子伦| 九月色婷婷综合| 亚洲成人在线播放| 五月激情婷婷国产精品久久久久久| 亚州操操| 国产99久| 26uuu| 欧洲第一久色| 成人欧美一区二区三区在线观看 | 亚洲视频在线观看99| 九九婷| 97se视频在线| 婷婷草| 超碰成人在线观看| 国产4P视频精品五区| 色婷婷丁香五月| 日日日影院| 五月天激情图片| 狠狠色丁香| 免费观看欧美成人AA片爱我多深| 成人必爱视| 国产婷婷久久| 一区二区三区四区牛| 精品久热| 欧美激情中文字幕| 日韩一区二区A片免费观看 | 国产伦理精品高清在线观看网站一区二区| 亚洲无码猫咪| 色欲五月丁香| 疯狂做受XXXX高潮A片动画| 天天狠天天叉| 激情网五月婷婷| 久久婷婷五月国产色综合激情| 九九在线91| 这里有精品| 国产成人亚洲综合A∨婷婷| 99rewww| 六月婷婷九月丁香| 婷婷六月色情| 成人短视频免费| 激情婷婷五月天| 亚洲色婷婷| 婷婷色丁香五月| 国产精品久久99| 五月丁香激情综合久久| 秋霞三及片| 色色色在线免费视频| 区美毛片子| 狠狠色婷婷色| 另类国产欧美视频| 丁香五月九九| 91丁香| 色色色色色色色色色色色色色色,网站| 九九av| 欧美成人A片AAA片在线播放| 99热9| 亚洲最大在线| 91色久| 久久99热在线观看| 热99在线| 婷婷五月丁香超碰| 丁香五月网址| 色色免费网站| 五月丁香爱婷婷深深| 伊人久久婷婷| 成人五月天色天堂| 丁香五月婷婷乱| 五月丁香六月欧美综合| 婷婷五月丁香伊人网| 99热国内| 伊人五月成人| 日本狠狠干| 五月婷婷丁香五月天| 停婷丁五月在线| 欧美日本另类| 九九久久五月天综合伊人| enecarbon-materials.com污K127封锁请涟系@wip1688 | 色噜噜,噜噜色| 婷婷,五月天,丁香,第一| 色婷婷丁香五月天| 日日干夜夜撸夜夜骑| 99久久国产成人精品| 丁香五月天人体| 颜射 精品性爱av| 婷婷五月激情欧美大胆视频| 天天干 夜夜爽| 丁香五月天色婷婷| 综合久久高清| 色婷婷丁香六月| 欧美久久五月婷婷| 情久久综合五月天| 99爱在线精品视频免费观看| 又大又粗九一在线| 欧美性久| 一区二区三区四区五区| 九九热思思| 九九热精品| 婷婷五月香蕉| 日韩一本操| 五月天丁香久久综合| 国产精品成av人在线视午夜片| 久久五月婷综合网| 婷婷丁香在线| 91精品综合久久久久久五月天| 精典久久| 伊人久久五月天| 色狠狠色综合| 色情婷婷五月天| 成 人片 黄 色 大 片| 五月丁香婷婷欧美色图视频五月丁香777电影 | 丁香五月婷婷少妇| 五月婷婷激情日本| 成人在线观看国产| 超碰人人草| 手机激情网| 国产亚洲成AV人片在线| 丁香五月天导航| 亚洲人妻一区二区| 97精品在线| 青柠影视免费高清电视剧| 91n啪啪| 伊人婷婷青青cao| 五月丁香无码视频| 欧美成人AAA片一区国产精品| OYIWbGcPu8H| 人人爽欧美婷婷久久久五月丁香| 天天插夜夜爽| 丁香五月在线播放| 日本一级| 5月婷婷6月六月丁香| 色色色99| 99日本黄站| 视色综合| 精品夜夜澡人妻无码AV| 日本三级大片| 久久久久久9| 7EzOBIhNq85TO| 超碰99久久| 精品久久久久久久人妻| 国产精品第一国产精品| 天天弄天天操| 五月天丁香六月综合| 久色五月丁香视频| 丁香婷婷五月人体| 色七七色九九| 婷婷五月天丁香久久| 伊人天天色| 天天做天天爽| 思恩热国产视频右线观看| 色五月激情五月| 色色婷婷综合| 久久66精品| 狠狠狠狠狠干| 久久视屏这里只有久久| 91蜜桃婷婷狠狠久久综合9色| 久久五月天激情| 亚洲狠狠爱婷婷| 久久国产精品乱子伦_靑青草…| 激情婷婷久久| 九九色色网| 伊人色综合久久久| 玖玖爱资源站| se99视频| 婷婷五月天激情偷拍| 亚洲午夜av| 婷婷五月丁香综合| 超碰碰碰碰| 二人电影免费版在线观看| 美日韩成人| 亚洲国产成人在线| 五月丁香啪啪| 五月婷婷六月丁| www.zbzhongsen.com| 色婷五月天| 欧美99热| 伦乱美欧| 五月丁香婷婷激情图片| 第四色五月天| www,com,五月色色| 久久五月天综合| 色热久资源| 婷婷中文字幕| www.lingjunshare.com| 99热在线只有精品| 9l视频自拍9l九色9l成人| 成人五月天丁香| 亚洲欧洲国产精品| 伊人无码高清| 丁香色五月天| 91碰碰| 99色色网| 五月天色婷婷网| 五月婷婷色色网址| 开心激情婷婷| 色播五月丁香| 色色激情网| 思思热视频在线观看| 五月婷视频久久| 日欧一片内射VA在线影院| 深爱激情五月天婷婷网| 色色狼人综合| 9热网站| 婷婷丁香五月在线播放| 91九九| 1024操逼| 久久精典| 5月丁香六月婷婷| 国产性爱色| 丁香六月婷婷| 99这里只有精品|v| 婷婷五月天成人动漫 | 五月婷婷综合在线亚洲视频| 色99在线观看| 亚州日本欧州韩美高青高潮一| 久久码久久无清| 婷婷五月天激情四射| 色插综合网| 操人视频91| 激情综合色| 99热无码首页| 丁香婷婷人妻综合网| 欧美123区免| 色婷婷久久| www.色五月.com| 色色激情| 嫩草视频观看| 国产91在线视频| 五月婷婷综合激情网| 丁香婷婷在线| 五月婷婷成人w| 99热思思久| 热99视频精品在线| 色玖玖| 天天日天天操天天干| 婷婷丁香社区| 婷婷五月天免费99| 久久久婷| 91丨九色丨熟女高潮| 五月丁香六月情| 色婷婷婷av| www久久久久久| 无码色| 日本色色网站| 婷婷色五月天在线观看| 色婷婷AV五月天| 开心五月综合激情网| 婷婷九月久久| 色综色网| 怡红院AV亚洲一区二区三区H| 婷婷的99视频网站| 99在线免费视频| 亚洲第一精品成人999久久精品| 亚洲第一色网站| 日本精品干| 婷婷久久爱| 亚洲综合五月天婷婷丁香| 99色婷婷视频| 婷婷导航| 91久久婷婷| 婷婷激情六月视频| 色婷婷a| 婷婷深爱五月天| 午夜激情五月天| 色视五月天婷婷| 777久久精品| 思思久久网| 亚洲五月婷婷| 五月天伊人av| 五月激情网五月综合网| www。五月天。com| 天天热夜夜操| www.日日夜夜.com| 婷婷五月天天爽| 五月婷丁香| 婷婷色五月婷| 天天射综合网站| 激情AV在线| 婷婷五月天AV在线| 色播五月婷婷| 狠狠综合网| 国产古装妇女野外A片| 亚洲乱码日产精品BD在线观看 | PORNY九色9l自拍视频成人| 久久五月天婷婷| 99热一区| 五月丁香人妻| 偷偷与邻居做爰完整视频| 99精品热| 以及AA大片看看| 亚州成人综合在线| 99亚洲精品视频| 亚洲综合五月天婷婷丁香| 丁香五月婷婷啪| 99在线精品视频免费| 99激情视频热| 精品亚洲VA网站| av在线免费网站 | 精品亚洲国产成AV人片传媒| 99re久热| 超碰在线精品| 91dy.av| 伍月婷婷六月丁香| 中文字幕av在线| 亚洲黄色影视| 免费观看日韩成人av| 色五月婷婷自拍| www.婷婷网| 五月丁香另类网| 99热在线观看免费精品| 丁香五月激情网| 99视频这里有精品| 丁香六月激情四射| 丁香六月天之亚州热女| 丁香综合网| 亚洲熟妇AV乱码在线观看| 26UUU欧美激情一区二区| 婷婷丁香综合成人| 婷婷开心激情| 第1影院之五月婷婷| 色婷五月天| 好好干av| 99热国产免费| 色99婷婷五月天| 激情五月伊人婷婷| 婷丁香五月天| 99久久超级| AA丁香综合激情| 五月天电影网| 丁香五月综合| 91九色精品| 天天摸日日舔狠狠添婷婷婷| 婷婷五月天激情网| 停停五月丁香| 久久婷婷五月天| 日本色超碰| 丁香五月婷婷少妇| 婷婷五月丁香综合激情| 91久女| 色色激情五月天| 丁香婷婷久久综合在线| 色婷婷六月| 日韩黄色AV无码| 夜夜人妻五月天| 五月丁香六月婷婷姐| 人妻内射一区二区在线视频| 一区二区成人电影| 中文AV在线观看| 久久婷婷一级片| 五月色婷婷综合色| 国产激情综合五月久久| 色五月天丁香婷婷色| 天色综合网站| 激情五月天网站| 97色啪| 国产精品热搜丁香五月婷婷| 精品一二三区久久AAA片| 日韩无码成人电影| 欧美视频五区| 五月天三级久久| 夜夜撸天天操| 激情五月狠狠喔| 五月丁香六月婷婷综合网| 色色色欧美| 中文字幕精品在线观看| 激情网婷婷五月天| 操日本三片99| 97性视频| 黄网免费观看| 激情九月婷婷| 久久综合性| AV在线大香蕉| 丁香大香蕉| 天天肏视频| 亚洲一级色电影| 久综合| 非洲一级AV| 亚洲AV综合网| www.zbzhongsen.com| 91精品久久久久久久| 五月丁香好婷婷A片网| 女人天堂久久| 九热...av| 久草视频一,二三四| 一区二区乱码视频| 五月婷婷色五月| 婷婷丁香人妻天久久| 丁香五月天激情综合| 免费AAAAA网| 超碰99热| 婷婷五月中文字幕国产| 久久婷婷五月综合色天| 亚洲成人无码网站| 久久婷婷五月天激情新地址| 国产精产国品一二三在观看| 严洲天天插| 综合 蜜月 婷婷| 97五月天| 婷婷丁香五月激情综合站_久久五月丁香激情综合_开心五月综合激情综合五月_婷 | 丁香婷五月| 性爱技巧五月| 男人的天堂五月丁香| 另类A片| 99精品综合视频| 国产色色网站网址| 五月天丁香看婷婷| 五月婷网| 婷婷中文字幕版| 区啪精品| 可以免费观看的AV| 婷婷五月六月激情| 99热都是精品| 五月天开心色情网| 色九九九九| 丁香五月六月| 丁香五月电影| 久热这里只有精品6官网亚洲| 男男野外做爰全过程69| 天天综合色| 夜夜夜天天操| 超碰99热在线观看| 91精品久久久久久77777| 在线A色| 超碰93在线观看| 专区无日本视频高清8| 婷婷五月丁香手机在线视频| 99这里是99在线视频| 天天综合网~91| 色播综合| 亚洲五月花| 热99国产精品| 9热在线视频精品| 亚洲操B| 亚洲六月色| 亚洲婷婷丁香五月在线| 婷婷娌伦网| 亚洲日韩一页精品发布| 国产成人综合在线| 丁香五月婷婷手机| 婷婷色五月天第7色| 偷偷操99| 99热人人操人人操| 国产亚洲精品久久久久久牛牛| 久久激情网| 婷婷丁香五月天色区| 六月丁香大香蕉| 丁香婷婷六月| 亚洲情综合五月天| AVDV久久| 丁香九月婷| 色婷五月天激情| 狠狠狠人妻| 亚洲免费看片| 五月丁香黄色| 欧美婷婷九月| 黄色短视频在线观看| 久久性爱视频| 色五月丁香五月| 色婷婷操逼| 婷婷六月天激情| 久久深爱激情网| 狠狠人人| 这里只有精品视频国产| 爱性综合网| 亲子乱AV一区二区三区下载| 台湾无码A片一区二区| 另类亚洲电影| 韩国97天堂| 色欲色欲久久宗合网| 久热99| 少妇综合网| 亚洲人妻av| 久久伊人婷婷| 大香蕉九操| 亚州操操| 亚洲综合99| 91人人操.COM| 亚洲九九夜夜| 色色网站| 日本九九九九| 国产又黄又爽又色的免费| 日本综合久久| 99精品国产在热久久| 国产毛片欧美毛片久久久| 色情成人五月天| 久久在线视频免费观看| 成人中文网| 日日操夜夜擼| 日本久碰| 亚洲乱码w在线观看| 九九青草热| 久久性刺激| 久久婷婷网| 日本人妻A片成人免费看片| 激情AV| 激情五月图| 亚洲综合五月天综合| 最新亚洲色色网| 色五月色五天色情网| 懂色AⅤ| 婷婷深爱五月天| www.色婷婷.com| 婷婷五月丁香香蕉| 大战熟女丰满人妻AV| 99婷婷综合| 99久操| 日本va欧美va欧美va精品| 色五月婷婷少妇人妻| 开心五月婷| 色五月婷婷综合| www.久久久久久久| www.狠狠操| 五月婷护士| 五月天伊人综合| 9er热在线精品视频| 激情婷婷五月色| 婷婷丁香五月色| www.99在线| 欧美性生交XXXXX无码小说| 好大好粗嗯啊-一级黄色大片免费观看-成人AV | 亚洲色色爱| 这里只有精品免费视频在线观看| 激情五月天啪啪| www.婷婷五月天| 丁J香六月首页| www.婷婷亚洲基地| 六月婷婷网站| 久久综合五月天| 1024操逼| 中文无码婷婷| 五月天婷婷在线播放免费| 亚洲av网站| 五月天丁香婷婷久久九| 丁香色色色| 久久婷婷五月综合啪| 激情丁香婷婷| 色婷婷色和| 六月婷婷六月天天在线免费| 色激情五月天| 久久色大香蕉| 99爱视频精品在线观看| 舔色婷婷| 成人龟情网丁香五月| 久久停停超碰| 色婷婷婷婷| 内射爽无广熟女亚洲| 色爱99| 狠色狠色综合久久| 久99视频| 91九色国产| 天天透天天爱| 丁香狠狠色婷婷久久无码视频| 99精品国产在热久久| 丁香五月婷婷视频| 丁香激情综合| 激情精品久久| 丁香六月情| 日韩国产在线免费观看| 99热这里只有精品一区| 99热思思| 欧美成人Va| 成人在线视频网| 91丁香| 天天日日综合| 五月天丁香婷婷久久九| 五月天亚洲最大成人| 婷婷伊人綜合中文字幕小说| 99WWW免费视频| 丁香五月天啪啪a日本| 香蕉网婷婷| 丁香五月婷婷成人综合| 99综合网| 青草性爱视频| 久99热| 99久久免费性爱视频`| 伊人网大香| 亚洲天堂大香蕉| 欧美性色视频| 激情图片99| 婷婷五月天成人网| 婷色视频| 99国产精品久久久久久久久久久| 丁香婷婷午夜| 人人摸人人澡人人| 影音先锋男人资源站一区二区| 五月伊人婷婷| 亚洲久艹| 99热这里只有精品55| 91日精品| 九月色婷婷综合| 9热在线观看| 国产精品色婷婷99久久精品| 五月丁香亭亭操逼| 大香蕉精品视频| 综合大香蕉| 久热这里只有精品99re| 婷婷五月黄色激情在线| 极品少妇XXXX精品少妇偷拍| 五月丁香AV、伊人业余、性色熟妇| 五月天伊人| 高清无码一区二区三区四区| 5月丁香美女影院| 快色t v在线入口| 亚洲无码九九九| 婷婷五月,偷窥偷拍网| 五月婷六月| 91狠狠色丁香婷婷综合久久| 亚洲精品乱码久久久久99| 人与禽A片啪啪| 青青草原福利在线| 久久嘟嘟丁香| 99久久婷婷国产综合精品草原| 婷婷丁香六月五月天| 少妇人妻偷人精品无码视频新浪| 天天天天天天天操| 丁香五月天天| 26uuu亚洲| 九九视频精品在线免费| 日本9区视频| 在线成人网站| 夜夜天天久久婷婷| 婷婷影院欧美| 婷婷成人视频| 丁香激情婷婷网| 色色色色色五月丁香| 欧美色婷婷| 永久地址 色| 激情综合国产| av国产精品| 丁香六月婷| 九九国产精视频| 亚洲色99综合天堂| 黄色三级日本| 激情五月色综合国产精品| 国产综合81p| 色情五月丁香| 玖玖资源在线视频| 丁香五月天天哦| 97人人操人| 久久激情综合| 久久精品人妻| 五月丁香WWW| 大香蕉九九操| 成人精品视频99在线观看免费| 激情综合网五月天| 影音先锋女人av鲁色资源网小说免费| 大大香蕉综合在线| www.夜夜操.com| 可以观看的AV| 最新午夜理论片| 9999热在线观看| 风流少妇A片一区二区蜜桃| 天天综合精品| 久久99成人性爱高清视频| 超碰在线观看99| 97伦乱| 丁香六月婷婷久久综合| 九九在线精点品| 天天撸夜夜爽| 五月丁香六月婷婷亚洲天堂网站| 97操| 色婷婷很很丝袜| 99热这里只有精品66| 丁香五月婷老师| 精品99网站| 99成人网一区| 五月天另类图片区99| 97亚洲视频在线| 婷婷五月成人| 亚洲永久免费| 在线观看婷婷5月| 凹凸操Av| 丁香六月爱综合| 成人五月天在线观看| 丁香五月婷婷亚洲色图| 丁香婷婷综合影院| 粉嫩AV久久一区二区三区| 久久99久久99精品免视看婷婷| 精品人妻久久久久久| 婷婷丁香五月天中文字幕| 色色色在线播放| 淫视馆aV二区一区| 91婷婷色五月| 超碰在线超碰| 9久久网| 偷偷操九九| 91在线精品一区二区| 成人无码髙潮喷水A片| 亚洲超碰在线| 五月婷婷色| 婷婷社区五月天| 9999久久久久| 99日韩| 色婷婷丁香| 五月丁香六月激情综合| 五月婷婷丁香啪啪| www.婷婷.com| 站长推荐无码播放| 99精品视频偷拍| 中文色婷婷| 秋霞A V毛片| 五月婷婷啪啪啪| 五月婷婷六月天| 五月伊人网| 91久久久久久久久久久| 久久性视频| 人妻啪啪啪| 欧美精品999| 超碰久热| 久久艹 五月天| www.91av.com| 996黄色片| AV在线收看| 26uuu丁香婷婷五月| 久久免费9| 99久久久国产大片区| 成人精品一区二区三区四区五区| 99成人精品六| 99久久户外勾搭| 激婷网| 另类图片五月天激情| 《丁香激情综合久久伊人久久》影视在线观看 -高清预告手机免费播放 -三妹影院 | 粉嫩AV久久一区二区三区| 97在线观视频免费观看| 99久热视频在线| 婷婷丁香先锋资源网站| 影视av久久久噜噜噜噜噜三级| PORNY九色9l自拍视频成人| 婷婷久久亚洲| 天天 日综合| 亚洲小视频| 丁香 亚洲 久久| 97在线精品| 91se在线视频| 亚洲天堂热| 日B日潘金莲BB| 天天综合91入口| 亚洲无码播放| 天堂婷婷五月色| 热思思| 婷婷五月天激情网| 国产亚洲精品久久久久苍井松| av操一操| av在线免费播放| 欧美成人精品A片免费一区99| 婷婷字幕在线| 婷婷丁香激情综合色情| www色婷婷久久综合久色 | 婷婷色五月激情| 五月天综合图片| 五月色网| 激情婷婷五月丁香啪啪啪| 1024成人在线观看| 久久亚洲色导航| 99精品综合| 91Chinese在线| 一区中文字幕电影| 只有精品在线观看| 丁香五月天在线| 五月天色区| 久久性爱激情| 综合久久婷婷五月丁香| 国产精品人人妻人人爽| 激情小说五月天| 91丨九色丨老农村| 六月综和久久| 性生活视频98791| 久久久宗合视频88| 99综合免费视频| 亚洲99精品欧美一区| 天天干天天爽| 97久操视频| 六月丁香婷婷开心综合基地| 996热| 日本少妇AA一级特黄大片| 久久er+| 99riAV国产精品视频| 丁香,开心成人,久久| www99热| 丁香五月偷拍| 色五月天婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷 | 密乳视频| www.操.com| 婷婷久久性爱| 99re这里| 教师性爱毛片| 激情播丁香| 91啪啪视频| 欧美日韩成人在线免费| 人人视频色| 免费看欧美成人A片无码| 丁香五月欧美成人| 欧美精品18| 99热伊人综合| 婷婷五月丁香色情| 激情五月婷在线精品| 狠狠操狠狠狠| www.夜夜| 婷婷天堂综合| 免费国产视频| 激情久久 婷婷| 自拍盗摄 另类| 精品99*| 亚洲欧洲自拍图片专区五月天| 狠狠高潮精品亚洲1| 91干婷婷| 欧美婷婷五月天综合| 99爱精品| 亚洲天天免费| 色999;丁香五月| 久久人人九九| 99热在线看片| 色娸娸综合网| 丁香六月婷婷综合在线| 麻豆WWWCOM内射软件| 99热20| 激情婷婷丁香| 丁香六月婷婷高清| 激情五月婷婷| www.五月天性.com| 免费无码毛片一区二区A片| 玖玖伦理电影| 偷偷与邻居做爰完整视频| 色婷婷XXXXX| 四色五月婷婷| 人妻性操逼中文字幕 国产| 欧美日韩99| 丁香五月性| 五月激情天| 人妻激情视频| www.五月婷婷.com| 99精品自拍视频| 久热无码| 麻豆科斗777| 色婷婷成人做爰A片免费看网站 | 色色色综合色| 26uuu丁香婷婷五月| 久久久www| 亚洲精品网站色视频| 天天爽天天操| 五月婷婷啪啪网| 天天色凹凸| 五月婷婷丁香五月| 久月婷婷| 操人无码| 激情五月天色婷婷| 六月丁香激情| 亚洲午夜av| 丁香五月日啪| www.久久99精品| 色老久久| 美女亚洲五月丁香| 香蕉网婷婷| 99色综合| 天天操天天日天天爱| 久久综合九色综合97婷婷| 六月婷婷在线| 91狠狠综合久久| 青草视频在线播放| 中文av网站| 九九亚洲视频| 色婷婷成人做爰A片免费看网站| 开心五月深爱五月丁香五月激情五月| 玖玖色资源| 亚洲色综合| 九九亚洲视频| a网站免费观看| 五月婷视频| 五月婷婷人人人操| 天天在线久久综合| 婷婷激情五月天小说| 五月丁香六月婷婷网| 五月停停丁香| 成人短视频在线| 色国产五月| 东北黄色一级| 97人人干| 类似婷婷激情综合网站| 欧日韩AV| 91互操| 欧美日本日韩| 综合五月天| 97涩涩丁香五月天| 亚洲成人九九九| 午夜69成人做爰视频| 婷婷六月综合激情| 精品网站99| 黑人无码一区| 激情婷婷丁香| 中文字幕在线观看视频www| 五月丁香AV在线| 激情网第九色| 久久婷婷东京热大香樵| 99综合视频一体| 九九色色| 99热久草| 99久久a线观| 99热久97| 五月停视频天堂| 日本色婷婷| 婷婷婷久久久| 五月丁香激情婷婷| 99精品这里只有免费视频| 99在线视频资源| 九九无毛| 亚洲亚洲人成综合网络| AAA久久| www婷婷| 区区欧美你爱| 2025最新亚洲激情在线| 四虎成人精品永久免费AV九九| 99热99日天天干| 成人超碰网| 久久丁香| 五月激情啪啪| 97色啪| 丁香六月亭亭久久综合| 开心四月婷婷在线色播播| 午夜色婷婷| 久久综合婷婷五月| 综久久久| 在线中文字幕免费视频| 国产偷人爽久久久久久老妇APP| 色婷婷狠狠| 久久久99久久| 色丁香五月| 五月天激情婷婷| 色色色色网| 日韩在线婷婷五月天综合| 蜜桃婷婷丁香| 狠狠操狠狠狠| www.五月天。com| 99热国品| 亚洲视频一区| 亚洲妇女熟BBW| 99精品久久| 色色无码| 最近中文字幕2019视频1| 丁香婷婷久久 | 亚洲午夜视频| 五月天综合激情网| 99re免费在线视频| 久久99免费视屏| 久久五月情| 9久久AV| 激情AV在线| 色啪综合| 五月婷婷色播视频| 丁香五月天在线视频| caopeng超碰| 99热99热在线观看| 色在线五月天免费| 热的无码综合视频| www.成人婷婷综合| 色综合色色| 99综合自拍| 99色婷婷视频| 九九热在线视频| 亚州美女| av首页在线| 韩国19 主播内部福利vip免费播放| 97色啪| WWW.天天日| 丁香六月婷婷高清| 俺去啦综合网| 天天射影院| site:pnnrt.com| 无码激情AAAAA片-区区| 日本婷婷色| 中文字幕,综合,91| a色色色色色| 伊人丁香花综合影院| 丁香桃色网| 国产激情综合五月久久| 五月婷婷影院| 五月停停99| 97久久精品| 激情综合网婷婷久久| 色色网五月激情| 综激情网| 成人无码髙潮喷水A片| 伊人大香蕉毛片| 亚洲婷婷婷| 琪琪理论片| 九九这里都是精品| WWW,五月| 亚洲一区二区色图-亚洲精品国产精品乱码-成人AV | 五月天婷婷操逼视频| 激情深爱五月天| 影院久久久| 亚洲色婷婷| 丁香五月婷婷色| 久久综合五月天| 天久综合91综合首页| 99久久久久久www| 婷婷五月激情六月丁香| 夜夜操,天天撸| 久久99网| www.爱婷婷.com| 色综合色婷婷色伊人| 丁香六月五月天| 日本综合久久| 亚洲成人AV在线| 丁香婷婷丁香五月欧美人| 婷婷精品性视频| 综合色色网| 色色五月综合| 99精品视频在线6| 狠狠干,狠狠操| 少妇性BBB搡BBB爽爽爽电影| 久久婷婷激情四射五月天| 激情美女五月天| 日本五月天激情| 99热9| www,com,五月色色| 丁香六月婷婷色XXXX| 激情五月天电影| 天天玩夜夜操| 性无码专区无码| 在线天堂9| 99色免费视频| 中文字幕成人| 欧美在线97| 久狠日av| 欧美成人精品A片免费一区99| 天堂综合久久| 丁香5月婷婷| 国产成人网| 色综合久久44| 可以看的av网站| 天天干天天日蜜臀av| 五月婷婷高清| 99这里有精品视频| 伊人久热91网| 天天撸夜夜爽| 亚洲五月天激情| 婷婷色播婷婷| 少妇性按摩无码中文A片| 九九九九九九热| 丁香香五月激情免费视频| 成人片在线播放| 97色天堂| 丁香六月激情综合| 超级碰碰一区| 五月天激情小说婷婷基地| 婷婷97| 天天综合网、天天综合色 | 免费成人中文字幕| 五月天欧美激情| 国产成人精品一区二三区熟女在线| 丁香婷婷五月综合色情| 中文AV在线观看| 色情开心五月| 欧美这里只有精品| 91美女啪啪| 人人舔人人| 97超碰9久热婷婷热| 欧美成人精品一区二区| 日B日潘金莲BB| 丁香五月婷婷天| 色综合99无码| 婷婷五月六月丁香综合| 狠狠干.com| 色综合久久久久久久久五月| 怎么样可以看免费的一级av| 99亚洲欧洲| 亚洲偷| 婷婷伊人久久综合| 五月丁香婷婷伊人日韩| 丁香五月婷婷色| www网站在线观看| 五月丁香六月情| 九九色院| 丁香花五月天激情| 99热最新| 五月婷婷激情网|