精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

編寫Docker Compose時要注意的五大常見錯誤

譯文 精選
系統(tǒng)
本文將討論開發(fā)人員在編寫Docker Compose時常見的五大錯誤,并給出提高工作效率的建議與方法。

編寫Docker Compose時的五大常見錯誤

【51CTO.com快譯】

在構(gòu)建容器化的應(yīng)用時,開發(fā)人員往往需要某種方法來引導(dǎo)啟動目標(biāo)容器,以對其進(jìn)行代碼級別的測試。盡管業(yè)界有許多方法可以實現(xiàn)該目的,但Docker Compose是目前最受歡迎的一種方法。它能夠讓如下兩個方面變得容易實現(xiàn):

  • 指定在開發(fā)過程中需要啟動的容器。
  • 設(shè)置一套快速的代碼測試調(diào)試(code-test-debug),以方便開發(fā)循環(huán)。

通常情況下,團(tuán)隊事先編寫一個docker-compose.yml文件,指定開發(fā)所需的所有內(nèi)容,并將其提交給存儲庫。然后,每個開發(fā)人員只需運行docker-compose up,即可啟動測試其代碼所需的所有容器。

不過,要讓docker-compose的設(shè)置能夠達(dá)到最佳性能狀態(tài),例如:在不到一分鐘之內(nèi)啟動開發(fā)環(huán)境,并且在幾秒鐘內(nèi)完成對每個更改的測試,這些都需要團(tuán)隊花費大量的工作。在這些準(zhǔn)備過程中,由于各個開發(fā)人員每天花費在測試其代碼上的時間各不相同,而且任何細(xì)微的改動,都可能會對整個開發(fā)團(tuán)隊的生產(chǎn)力產(chǎn)生巨大的影響。因此,我們有必要在此討論他們在編寫Docker Compose時常見的五大錯誤,及其對應(yīng)的解決方法。

錯誤1:頻繁地進(jìn)行容器重建

Docker的構(gòu)建往往比較耗時,特別是每次針對代碼的變更開展測試的時候。如果能夠節(jié)省此方面的時間,那么對于加快開發(fā)周期來說是十分有益的。過去,對于非容器化的應(yīng)用,我們通常會采取如下傳統(tǒng)的工作流程:

  • 編寫代碼
  • 構(gòu)建
  • 運行

多年來,業(yè)界持續(xù)優(yōu)化該流程,并提出了諸如:針對編譯語言的增量構(gòu)建和熱重載(hot reloading)等實用技巧。隨著容器技術(shù)的出現(xiàn),我們在現(xiàn)有的工作流程中增加了docker構(gòu)建的步驟,如下圖所示。

  • 編寫代碼
  • 構(gòu)建
  • Docker構(gòu)建
  • 運行

當(dāng)然,如果構(gòu)建得不好,那么docker構(gòu)建步驟也可能會帶來額外的時間開銷。例如:使用apt-get進(jìn)行依賴項的重載步驟。有時候,這些步驟可能會讓整個測試過程比添加Docker之前還要慢。

解決方案:在Docker外部運行代碼

第一種解決方法是在Docker Compose中啟動所有的依賴項,然后在本地運行測試代碼。此舉模仿了非容器化應(yīng)用開發(fā)的工作流程。

您只需向localhost公布依賴關(guān)系,然后將正在使用的服務(wù)指向所有的localhost:地址即可。但是,該方法并非永遠(yuǎn)可行,如果您正在使用的是代碼依賴容器鏡像中的內(nèi)置元素時,那么用戶電腦就不一定能夠訪問到具體內(nèi)容。

解決方案:最大化緩存,以優(yōu)化Dockerfile

如果必須構(gòu)建Docker鏡像,那么我們可以編寫Dockerfile,通過最大化緩存,將Docker的構(gòu)建時間從原來的10分鐘壓縮至1分鐘。

在生產(chǎn)環(huán)境中,Dockerfile的典型模式是通過將單個命令鏈接到一條RUN語句中,來減少層級的數(shù)量。畢竟,在開發(fā)過程中鏡像的大小并不重要,重要的是層級的數(shù)量。下面展示的是在生產(chǎn)環(huán)境中的一個Dockerfile文件:

 

  1. RUN \ 
  2. go get -d -v \ 
  3. && go install -v \ 
  4. && go build 

 

不過,該命令在每次被重新運行時,Docker都會重新下載所有的依賴項,并重新安裝它們。我們可以通過增量構(gòu)建(incremental build)來提供效率。

同時,您可以將開發(fā)專用的Dockerfile其分成幾個短小的步驟,從而使得那些經(jīng)常更改的代碼步驟被排到最后,而將鮮少更改的步驟(例如拉式依賴關(guān)系)被放在首位。因此,在重建Dockerfile時,您不必構(gòu)建整個項目,而只需構(gòu)建那些被已更改的少量末尾塊即可。有關(guān)此方面的案例,您可以參閱以下用于Blimp(請參見--https://kelda.io/blimp)開發(fā)的Dockerfile。通過遵循上述方法,您可以將繁瑣的構(gòu)建過程縮減到了幾秒鐘之內(nèi)完成。

 

  1. FROM golang:1.13-alpine as builder 
  2. RUN apk add busybox-static 
  3. WORKDIR /go/src/github.com/kelda-inc/blimp 
  4. ADD ./go.mod ./go.mod 
  5. ADD ./go.sum ./go.sum 
  6. ADD ./pkg ./pkg 
  7. ARG COMPILE_FLAGS 
  8. RUN CGO_ENABLED=0 go install -i -ldflags "${COMPILE_FLAGS}" ./pkg/... 
  9. ADD ./login-proxy ./login-proxy 
  10. RUN CGO_ENABLED=0 go install -i -ldflags "${COMPILE_FLAGS}" ./login-proxy/... 
  11.        ADD ./registry ./registry 
  12. RUN CGO_ENABLED=0 go install -i -ldflags "${COMPILE_FLAGS}" ./registry/... 
  13. ADD ./sandbox ./sandbox 
  14. RUN CGO_ENABLED=0 go install -i -ldflags "${COMPILE_FLAGS}" ./sandbox/... 
  15. ADD ./cluster-controller ./cluster-controller 
  16. RUN CGO_ENABLED=0 go install -i -ldflags "${COMPILE_FLAGS}" ./cluster-controller/... 
  17. RUN mkdir /gobin 
  18. RUN cp /go/bin/cluster-controller /gobin/blimp-cluster-controller 
  19. RUN cp /go/bin/syncthing /gobin/blimp-syncthing 
  20. RUN cp /go/bin/init /gobin/blimp-init 
  21. RUN cp /go/bin/sbctl /gobin/blimp-sbctl 
  22. RUN cp /go/bin/registry /gobin/blimp-auth 
  23. RUN cp /go/bin/vcp /gobin/blimp-vcp 
  24. RUN cp /go/bin/login-proxy /gobin/login-proxy 
  25. FROM alpine 
  26.  
  27. COPY --from=builder /bin/busybox.static /bin/busybox.static 
  28. COPY --from=builder /gobin/* /bin/ 

 

最后值得一提的是:隨著多階段構(gòu)建(multi-stage builds,請參見--https://docs.docker.com/develop/develop-images/multistmuage-build/)的引入,我們?nèi)缃窨梢詣?chuàng)建各種具有良好分層和較小鏡像的Dockerfile。不過,我們在此并不會展開詳細(xì)的討論。

解決方案:使用主機卷(host volumes)

大多數(shù)語言都會提供一種方法來監(jiān)視程序代碼,并在代碼發(fā)生更改時自動重新運行。例如,nodemon就是JavaScript語言的一種Node自動重啟工具(請參見--https://www.npmjs.com/package/nodemon)。由于主機卷可以將您電腦上的目錄,鏡像到正在運行的容器之中,因此您在使用文本編輯器來編輯文件時,各種更改將會被自動同步到容器中,并在容器內(nèi)被立即執(zhí)行。

最初,您可能需要花點時間進(jìn)行前期準(zhǔn)備,之后在Docker中,您可以在1-2秒內(nèi)馬上看到代碼的更改結(jié)果。因此,我們會選擇使用主機卷將代碼直接掛載到容器中,以便以原生的方式,在包含其了運行時依賴項的Docker容器中運行自己的代碼。

錯誤2:緩慢的主機卷

如果您使用過主機卷,那么是否已經(jīng)注意到:在Windows和Mac上讀寫文件的速度可能會非常緩慢?其實,對于諸如Node.js和具有復(fù)雜依賴性的PHP應(yīng)用程序之類,需要讀寫大量文件的命令而言,這是一個已知的問題。其背后的原因是:Docker主要運行在Windows和Mac上的VM中。而我們在進(jìn)行主機卷的掛載時,它必須經(jīng)過大量的轉(zhuǎn)換,才能使文件夾進(jìn)入容器,這有點類似于網(wǎng)絡(luò)文件系統(tǒng)。而此類額外的開銷,在Linux本地運行Docker時,則不會出現(xiàn)。

解決方案:放寬強一致性

該問題的一個關(guān)鍵原因是:文件系統(tǒng)在默認(rèn)掛載時,需要保持強一致性。也就是說:所有特定文件的讀寫進(jìn)程都必須統(tǒng)一對于文件修改的順序,以便讓文件的內(nèi)容達(dá)成最終的一致。可是,強一致性的代價非常昂貴,它需要所有文件的寫入進(jìn)程之間持續(xù)保持協(xié)調(diào),以確保它們不會干擾或破壞彼此的更改。

雖然在生產(chǎn)環(huán)境中的數(shù)據(jù)庫需要保持強一致性。但是在開發(fā)過程中,由于寫入進(jìn)程就是代碼文件本身,目標(biāo)就是我們的存儲庫,因此強一致性就不那么必需了。那么,我們就可以考慮Docker在掛載卷時,放寬強一致性。例如:在Docker Compose中,我們可以簡單地將此cached關(guān)鍵字添加到卷掛載中,以獲得顯著的性能保證。對應(yīng)的代碼如下:

 

  1. volumes: 
  2. "./app:/usr/src/app/app:cached" 

 

注意:此舉僅適合開發(fā)環(huán)境,不適合生產(chǎn)環(huán)境。

解決方案:代碼同步

另一種處置方法是設(shè)置代碼的同步。您可以使用工具偵測主機和容器之間的變化,通過復(fù)制文件來解決差異(類似于rsync),而不是掛載卷。Docker在最新的版本中內(nèi)置了用來替代卷的緩存模式--Mutagen(請參見--https://mutagen.io/)。此外,上文提到的Blimp則使用Syncthing(請參見--https://http//syncthing.net/)實現(xiàn)了類似的功能。

解決方案:不要掛載軟件包

Node之類的語言通常會把大部分文件操作放在packages目錄中(如node_modules)。那么,我們可以試著從卷中去除此類目錄,以顯著提高性能。下列示例是一個將代碼掛載到容器中的專屬卷,它覆蓋了node_modules目錄。

 

  1. volumes: 
  2.    - ".:/usr/src/app"   
  3.    - "/usr/src/app/node_modules" 

 

該掛載操作會告訴Docker去使用node_modules目錄下的標(biāo)準(zhǔn)卷,以使得在npm install運行時,不再使用慢速的主機掛載方式。為了使該工作能夠正常進(jìn)行,我們應(yīng)該在容器首次啟動時,在entrypoint中執(zhí)行npm install,以安裝依賴項,并更新node_modules目錄。具體代碼如下:

 

  1. entrypoint: 
  2.   - "sh" 
  3.   - "-c" 
  4.          - "npm install && ./node_modules/.bin/nodemon server.js" 

 

如果您想查看并運行上述完整的示例,請參考--https://kelda.io/blimp/docs/examples/#nodejs。

錯誤3:脆弱的配置

如果您曾深入研究過代碼,您可能會發(fā)現(xiàn)Docker Compose中也充斥著各種大量復(fù)制和粘貼而來的代碼。顯然,我們需要干凈整潔的Docker Compose文件,以方便輕松地按需做出修改。

解決方案:使用各種env文件

Env文件能夠?qū)h(huán)境變量與Docker Compose主配置分開,以實現(xiàn):

  • 避免將代碼泄露到git的歷史記錄中。
  • 開發(fā)人員都能按需自定義設(shè)置。例如,每個開發(fā)人員都可以持有一個唯一的訪問密鑰。他們通過將配置保存在.env文件中,以實現(xiàn)不必修改已提交的docker-compose.yml文件,也不必在文件更新時處理各種沖突問題。

如果您想使用環(huán)境文件,只需添加一個.env文件,或設(shè)置帶有env_file字段的顯式路徑即可(請參見--https://docs.docker.com/compose/environment-variables/#the-env_file-configuration-option)。

解決方案:使用替代文件

替換文件(請參見--https://docs.docker.com/compose/extends/)可以方便您在具有基本配置的基礎(chǔ)上,在其他文件中指定各項修改。該功能非常適合Docker Swarm及其YAML文件。您可以將生產(chǎn)環(huán)境的配置存儲在docker-compose.yml中,然后在替代文件中,指定開發(fā)所需的任何修改(例如:使用主機卷)。

解決方案:使用extends

如果您使用的是Docker Compose v2,那么就可以使用extends關(guān)鍵字,在多個位置導(dǎo)入YAML片段。例如,您可能會定義:公司里所有的服務(wù)都需要在開發(fā)的Docker Compose文件中帶有某五個特定的配置。然后您可以使用extends關(guān)鍵字將其放置到任何需要的地方,以實現(xiàn)模塊化。當(dāng)然,如果僅在YAML中執(zhí)行此項操作可能比較繁瑣,我們完全可以通過編程來實現(xiàn)。

雖然Compose v3刪除了對于extends關(guān)鍵字的支持。但是,您仍然可以使用YAML anchors(請參見--https://support.atlassian.com/bitbucket-cloud/docs/yaml-anchors/)來實現(xiàn)類似的結(jié)果。

錯誤4:亂序啟動(Flaky Boots)

如果docker-compose出現(xiàn)了崩潰,我們能夠僅使用docker-compose restart來重啟服務(wù)嗎?其實此類問題主要與服務(wù)錯誤的啟動順序有關(guān)。例如,您的Web應(yīng)用可能依賴于數(shù)據(jù)庫,那么在Web應(yīng)用啟動時,如果數(shù)據(jù)庫尚未準(zhǔn)備就緒,就會出現(xiàn)崩潰。

解決方案:使用depends_on

depends_on使您可以控制啟動的順序。默認(rèn)情況下,depends_on僅判斷依賴項是否已經(jīng)創(chuàng)建,而不會判斷依賴項是否“健康”。雖然Docker Compose v2能夠支持將depends_on與運行狀況的檢查相結(jié)合。不過,該功能也在Docker Compose v3中被去除了。當(dāng)然,您可以使用諸如wait-for-it.sh之類的腳本,來手動實現(xiàn)類似的功能。

和上面提到的放寬強一致性相同,雖然Docker文檔不建議在生產(chǎn)環(huán)境中使用depends_on和wait-for-it.sh,來為容器指定特定的啟動順序。但是對于開發(fā)而言,我們完全可以用到depends_on。

錯誤5:資源管理不善

如果您碰到開發(fā)流程受阻,Docker無法全速運行,或是無法平穩(wěn)地獲取運行所需的資源,那么您可以考慮以下幾個方面:

解決方案:更改Docker Desktop的分配

Docker Desktop需要大量的RAM和CPU,尤其是在Mac和Windows的VM上。Docker Desktop的默認(rèn)配置往往不會分配足夠的RAM和CPU,因此我們通常需要調(diào)整相關(guān)的設(shè)置。在開發(fā)時,我經(jīng)驗是:為Docker分配大約8GB的RAM和4個CPU,并且在不使用Docker Desktop時,及時關(guān)閉之。

解決方案:刪除未使用的資源

人們在使用Docker時經(jīng)常會出現(xiàn)數(shù)百個卷與舊的容器鏡像。這在無形中浪費了各種資源。為了釋放這些資源,我們建議通過間或運行docker system prune的方式,以刪除當(dāng)前未使用到的所有卷、容器和網(wǎng)絡(luò)。

總結(jié)

總的說來,為了改善開發(fā)人員在使用Docker Compose時的體驗,我建議您做到如下五點:

  • 最小化容器的重建。
  • 使用主機卷。
  • 像對待代碼那樣,認(rèn)真配置文件,以便于維護(hù)。
  • 讓啟動更加可靠。
  • 認(rèn)真分配管理資源。

此外,您還可以通過鏈接--https://kelda.io/blog/docker-volumes-for-development/,以獲悉如何設(shè)置主機卷,并加快Docker開發(fā)。

原標(biāo)題:5 Common Mistakes When Writing Docker Compose ,作者: Ethan J Jackson

【51CTO譯稿,合作站點轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】

 

責(zé)任編輯:龐桂玉 來源: 51CTO
相關(guān)推薦

2016-04-19 10:23:48

2010-07-21 08:51:26

Perl錯誤

2013-03-26 10:45:00

2015-03-11 09:55:12

2023-09-12 09:47:38

云計算云管理

2010-07-26 15:50:03

Perl腳本語言

2015-01-14 09:29:35

2014-01-10 10:36:39

Hypervisor

2010-07-20 11:43:56

Perl錯誤

2024-07-16 08:00:00

Kubernetes開發(fā)

2018-04-10 04:01:17

2009-03-24 10:09:58

SaaS誤區(qū)調(diào)查

2011-08-23 12:11:45

2012-06-06 10:13:14

虛擬化虛擬機

2020-11-03 10:09:46

機器學(xué)習(xí)論文代碼

2011-11-16 09:46:14

IaaS云計算

2015-08-27 10:11:18

2022-03-23 13:05:46

IT服務(wù)管理CIO

2022-05-06 14:55:57

區(qū)塊鏈比特幣加密貨幣

2019-08-30 13:00:12

MySQL高可用數(shù)據(jù)庫
點贊
收藏

51CTO技術(shù)棧公眾號

蜜臀av在线播放一区二区三区| 美女精品久久| 久久精品视频免费| 国产精品欧美日韩一区二区| 黄色av免费播放| 国产一区高清| 亚洲一区二区三区四区在线免费观看| 国产亚洲二区| 怡红院成永久免费人全部视频| 婷婷综合伊人| 亚洲国产欧美一区二区三区同亚洲| 亚洲国产精品久久久久婷蜜芽| 成人亚洲综合天堂| 国产不卡在线播放| 国产成人精品一区二区| 日韩高清dvd碟片| 日韩激情毛片| 4438x亚洲最大成人网| 国产av天堂无码一区二区三区| 北条麻妃在线| www.欧美亚洲| 成人久久精品视频| 草莓视频18免费观看| 欧美三级第一页| 国产亚洲精品美女| 亚洲一区二区三区四区av| 色综合天天色| 午夜电影一区二区| 欧美少妇在线观看| 成人不用播放器| av中文字幕在线不卡| 91嫩草在线视频| 一区二区三区在线观看av| 久久性感美女视频| 亚洲三级免费看| 秘密基地免费观看完整版中文| 国产精品久久久久久久久久齐齐 | 国产成人女人毛片视频在线| 伊人久久中文字幕| 国产精品色网| 国内精品久久久| 四虎884aa成人精品| 精品久久综合| 亚洲欧美激情四射在线日| 黄色国产在线视频| 日韩国产在线不卡视频| 欧美男生操女生| 黄色三级视频片| 中文字幕在线中文字幕在线中三区| 亚洲麻豆国产自偷在线| 一卡二卡3卡四卡高清精品视频| 午夜激情小视频| 大尺度一区二区| 91gao视频| 国产精品久久777777换脸| 蜜桃av一区二区| 国产精品电影一区| 免费av中文字幕| 久久精品亚洲一区二区| 青青草原一区二区| 黄色在线免费观看| 久久久久久黄| 日韩av观看网址| 久久99国产综合精品免费| 99精品国产99久久久久久福利| 欧美大片在线看免费观看| 黄色一级视频免费观看| 国模一区二区三区| 国产综合在线视频| 久久99精品波多结衣一区| 99热免费精品| 日本一欧美一欧美一亚洲视频| 欧美激情黑白配| 久热re这里精品视频在线6| 国产成人一区二区三区小说| 亚洲成人av网址| 久久精品二区亚洲w码| 成人午夜高潮视频| 亚洲AV无码精品自拍| 成人午夜短视频| 狼狼综合久久久久综合网| 免费在线一级视频| 国产精品免费免费| 狠狠干视频网站| 91超碰免费在线| 91久久人澡人人添人人爽欧美| 手机在线看福利| a一区二区三区亚洲| 欧美成人一区二区三区片免费| 国产情侣久久久久aⅴ免费| 欧美激情15p| 中文字幕日韩电影| 精品国产乱码久久久久久鸭王1 | 99久久免费视频.com| 欧美精品一区二区三区四区五区| 成人在线观看免费| 亚洲一区在线观看免费 | 蜜桃视频在线观看免费视频网站www| 综合网在线视频| 日本午夜激情视频| 国产精品伦一区二区| 精品免费国产二区三区| 加勒比综合在线| 91精品国产91久久久久久密臀| 久久久久久成人精品| 亚洲自拍一区在线观看| 国产一区二区福利视频| 裸模一区二区三区免费| 国产传媒在线播放| 欧美色播在线播放| 色一情一区二区三区| 欧美爱爱网站| 久久视频在线视频| 狠狠人妻久久久久久综合| 国内外成人在线| 欧美日韩精品一区| 国产探花在线观看| 欧美日韩国产高清一区二区| 国产精品熟妇一区二区三区四区 | 黑人精品欧美一区二区蜜桃| 国内精品视频免费| 免费在线观看av| 欧美性猛交xxxx| 麻豆传媒在线看| 欧美色婷婷久久99精品红桃| 91精品国产99| 精品国产亚洲AV| 国产精品三级在线观看| 99热自拍偷拍| 午夜视频在线观看精品中文| 中日韩美女免费视频网址在线观看| 国产午夜福利精品| 国产精品自拍av| 亚洲激情电影在线| 在线精品亚洲欧美日韩国产| 欧美变态tickling挠脚心| 人与动物性xxxx| 丝袜美腿亚洲色图| 久久亚洲高清| √8天堂资源地址中文在线| 欧美一卡2卡3卡4卡| 婷婷丁香综合网| 日韩不卡在线观看日韩不卡视频| 精品久久久久久综合日本| 色www永久免费视频首页在线 | 91在线视频国产| 国产三级一区二区| 六月丁香婷婷在线| 欧美电影完整版在线观看| 久久久久九九九九| 亚洲第一成年人网站| 亚洲精品日产精品乱码不卡| 狠狠干狠狠操视频| 欧美丰满日韩| 91精品免费久久久久久久久| 日本视频在线免费观看| 欧美视频一区在线观看| 青青草自拍偷拍| 免费在线欧美视频| 国产美女网站视频| 福利一区二区免费视频| 亚洲女人被黑人巨大进入al| 日干夜干天天干| 成人污视频在线观看| 成人一区二区av| 另类视频一区二区三区| 欧美成人精品不卡视频在线观看| 亚洲综合免费视频| 中文字幕一区二区三区四区不卡 | 日韩欧美精品在线观看| 蜜桃精品一区二区| 视频一区免费在线观看| 五月天丁香综合久久国产| 成人在线观看免费播放| 精品国产一区二区三区久久狼5月| 一级特黄aaa大片| 亚洲欧美日韩在线| 97精品人人妻人人| 国产精品五区| 日本在线免费观看一区| 黄色成人小视频| 久久777国产线看观看精品| 神马一区二区三区| 精品久久久久久久大神国产| 久久成人激情视频| 另类调教123区| 亚洲小视频在线播放| 国产一级成人av| 国产精品白嫩初高中害羞小美女 | 中文字幕九色91在线| 国产精品久久久久久免费| 亚洲自拍欧美精品| xxxx日本免费| 国产麻豆精品视频| 干日本少妇首页| 国产电影一区二区在线观看| 99re在线| 色成人免费网站| 美女福利精品视频| 日本天堂在线| 在线成人午夜影院| 波多野结衣国产| 亚洲欧洲日韩一区二区三区| 亚洲观看黄色网| 美女网站色91| 无码精品a∨在线观看中文| 欧美va久久久噜噜噜久久| 精品免费二区三区三区高中清不卡| 成人做爰视频www| 久久久久久中文字幕| 国产日韩精品在线看| 欧美成人一级视频| 中文字幕91爱爱| 亚洲成av人片一区二区梦乃 | 亚洲系列另类av| 91久久在线观看| 亚洲成人人体| 久久久女人电视剧免费播放下载| a天堂在线资源| 亚洲精品v天堂中文字幕| 国产女人爽到高潮a毛片| 一本久久精品一区二区| 欧美日韩中文视频| 亚洲视频在线观看一区| 亚洲色成人网站www永久四虎| 国产suv精品一区二区883| 亚洲天堂2018av| 久久不射网站| 国产婷婷一区二区三区| 欧美日韩一区自拍 | 不许穿内裤随时挨c调教h苏绵| 日韩va欧美va亚洲va久久| 国内自拍在线观看| 亚洲二区在线| 成人av在线播放观看| 91日韩欧美| 神马影院一区二区| 台湾亚洲精品一区二区tv| 高清不卡一区二区三区| 久久久久九九精品影院| 成人妇女淫片aaaa视频| 久久人人视频| 国产免费一区二区三区在线观看| 中文字幕乱码在线播放| 欧美综合第一页| 日韩av影片| 97在线视频精品| bl在线肉h视频大尺度| 欧美高跟鞋交xxxxhd| 羞羞污视频在线观看| 欧美精品午夜视频| 2024最新电影免费在线观看| 久久视频在线直播| 中文字幕在线观看播放| 欧美精品在线观看91| 91香蕉在线观看| 欧美极品少妇xxxxx| 欧美6一10sex性hd| 性欧美视频videos6一9| 国产不卡人人| 欧美最近摘花xxxx摘花| 欧美一区国产| 国产精品国模在线| 成人国产精选| 成人欧美一区二区三区在线| vam成人资源在线观看| 99在线热播| 精品福利网址导航| 久久久久久国产精品一区| 九九热线有精品视频99| 色播亚洲视频在线观看| 五月精品视频| av 日韩 人妻 黑人 综合 无码| 午夜性色一区二区三区免费视频| www.夜夜爱| 国产一区二区三区久久| 丁香婷婷激情网| 久久国产综合精品| 中文字幕无码毛片免费看| 成人激情午夜影院| 成都免费高清电影| 中文字幕制服丝袜一区二区三区 | 中文字幕亚洲无线码a| 国产黄色在线网站| 久久久久一本一区二区青青蜜月| 中文字幕乱码在线播放| 成人h视频在线观看播放| 一区中文字幕电影| 久久涩涩网站| 99欧美视频| 久草热视频在线观看| 美女任你摸久久| 中国特级黄色大片| 国产欧美一区二区三区沐欲| wwwav国产| 日韩欧美高清在线视频| 91影院在线播放| 日韩第一页在线| 欧美尤物美女在线| 亚州国产精品久久久| 91超碰碰碰碰久久久久久综合| 亚洲在线一区二区| 视频一区欧美| 国产人妻人伦精品| 青青草成人在线观看| 欧美激情 亚洲| 国产精品麻豆视频| 日韩女同强女同hd| 91精品国产综合久久久蜜臀粉嫩 | 亚洲日本欧美在线| 亚洲看片一区| 日韩精品aaa| 久久久久99精品国产片| 国产精品成人免费观看| 精品1区2区3区| 深夜福利在线视频| 最新国产精品拍自在线播放| 麻豆国产在线| 97视频资源在线观看| 成人激情电影在线| 亚洲欧洲日产国码无码久久99| 国产精品一区二区果冻传媒| 91久久免费视频| 精品国产鲁一鲁一区二区张丽| 99热这里是精品| 伊人久久久久久久久久久| 久久久男人天堂| 91国产在线播放| 日韩精品午夜| 成人在线观看a| 99re成人在线| 日本少妇在线观看| 日韩欧美中文字幕精品| 日本中文字幕在线观看| 国产成人精品av在线| 亚洲免费专区| 国产一级爱c视频| 国产**成人网毛片九色| 欧美国产日韩在线观看成人| 欧美日本国产一区| www.视频在线.com| 国产精品露脸自拍| 欧美久久综合网| 欧美精品无码一区二区三区| 97久久超碰国产精品电影| 天堂网av手机版| 亚洲成人av片在线观看| 俄罗斯一级**毛片在线播放| 99九九视频| 欧美91大片| 潘金莲一级淫片aaaaa| 亚洲欧美韩国综合色| 国产黄色片免费观看| 九九九久久国产免费| 一区二区三区在线免费看| a级黄色片免费| 国产伦精品一区二区三区免费迷| 日韩女优一区二区| 日韩三级在线观看| 高h视频在线播放| 国产在线一区二区三区四区| 亚洲免费高清| 大又大又粗又硬又爽少妇毛片| 色综合天天综合在线视频| 免费黄色在线视频网站| 国产精品久久久久久av| 99久久婷婷| 中文字幕乱码在线人视频| 亚洲国产精品人人做人人爽| 天堂网在线中文| 欧美一级大片在线观看| 欧美日韩在线播放视频| 在线视频观看一区二区| 亚洲综合成人网| 免费国产在线视频| 国产日韩专区在线| 女主播福利一区| av无码一区二区三区| 在线视频你懂得一区二区三区| 日本免费在线观看| av一本久道久久波多野结衣| 亚洲精一区二区三区| 中文字幕在线观看免费高清 | 日韩中文字幕免费在线 | 欧美三级在线免费观看| 亚洲国产日韩欧美在线动漫| 日日夜夜天天综合| 在线观看国产一区| 成人国产精品免费观看| 91黑人精品一区二区三区| 久久精品国产免费观看| 精品人人人人| 国产日韩欧美久久| 亚洲成人av福利| 欧美三级理伦电影| 狠狠色综合网站久久久久久久| 麻豆国产欧美日韩综合精品二区| 欧美黄色免费在线观看| 国产亚洲精品日韩| 成人爽a毛片|