一文搞懂 Docker 鏡像的常用操作?。ㄒ晃母愣瞪捣植磺宓氖謾C攝像頭CMOS)

      網(wǎng)友投稿 1825 2022-05-30

      鏡像作為 docker 三大核心概念中,最重要的一個關(guān)鍵詞,它有很多操作,是您想學(xué)習(xí)容器技術(shù)不得不掌握的。本文將帶您一步一步,圖文并重,上手操作來學(xué)習(xí)它。操作之前請確保你已經(jīng)安裝Docker,安裝Docker的過程本文并不涉及,可以查看官網(wǎng)或者Google一下相關(guān)操作系統(tǒng)的安裝,比較簡單。

      如果之前沒有了解過Docker可以看一下這篇文章:《可能是把Docker的概念講的最清楚的一篇文章》

      Docker官網(wǎng):https://www.docker.com/

      Docker官方文檔:https://docs.docker.com/

      目錄

      一文搞懂 Docker 鏡像的常用操作!(一文搞懂傻傻分不清的手機攝像頭CMOS)

      一 Docker 下載鏡像

      1.1 下載鏡像

      1.2 驗證

      1.3 下載鏡像相關(guān)細(xì)節(jié)

      1.4 PULL 子命令

      二 Docker 查看鏡像信息

      2.1 images 命令列出鏡像

      2.2 使用 tag 命令為鏡像添加標(biāo)簽

      2.3 使用 inspect 命令查看鏡像詳細(xì)信息

      2.4 使用 history 命令查看鏡像歷史

      三 Docker 搜索鏡像

      3.1 search 命令

      3.2 search 子命令

      四 Docker 刪除鏡像

      4.1 通過標(biāo)簽刪除鏡像

      4.2 通過 ID 刪除鏡像

      4.3 刪除鏡像的限制

      4.4 清理鏡像

      五 Docker 創(chuàng)建鏡像

      5.1 基于已有的鏡像創(chuàng)建

      5.2 基于 Dockerfile 創(chuàng)建

      六 Docker 導(dǎo)出&加載鏡像

      6.1 導(dǎo)出鏡像

      6.2 加載鏡像

      七 Docker 上傳鏡像

      7.1 獲取 Docker ID

      7.2 創(chuàng)建鏡像倉庫

      7.3 上傳鏡像

      八 總結(jié)

      一 Docker 下載鏡像

      如果我們想要在本地運行容器,就必須保證本地存在對應(yīng)的鏡像。所以,第一步,我們需要下載鏡像。當(dāng)我們嘗試下載鏡像時,Docker 會嘗試先從默認(rèn)的鏡像倉庫(默認(rèn)使用 Docker Hub 公共倉庫)去下載,當(dāng)然了,用戶也可以自定義配置想要下載的鏡像倉庫。

      1.1 下載鏡像

      鏡像是運行容器的前提,我們可以使用?docker pull[IMAGE_NAME]:[TAG]命令來下載鏡像,其中?IMAGE_NAME?表示的是鏡像的名稱,而?TAG?是鏡像的標(biāo)簽,也就是說我們需要通過 “鏡像 + 標(biāo)簽” 的方式來下載鏡像。

      注意:?您也可以不顯式地指定 TAG, 它會默認(rèn)下載 latest 標(biāo)簽,也就是下載倉庫中最新版本的鏡像。這里并不推薦您下載 latest 標(biāo)簽,因為該鏡像的內(nèi)容會跟蹤鏡像的最新版本,并隨之變化,所以它是不穩(wěn)定的。在生產(chǎn)環(huán)境中,可能會出現(xiàn)莫名其妙的 bug, 推薦您最好還是顯示的指定具體的 TAG。

      舉個例子,如我們想要下載一個 Mysql 5.7 鏡像,可以通過命令來下載:

      docker?pull?mysql:5.7

      會看到控制臺輸出內(nèi)容如下:

      Docker 下載鏡像

      注意:?由于官方 DockerHub 倉庫服務(wù)器在國外,下載速度較慢,所以我將倉庫的地址更改成了國內(nèi)的?docker.io?的鏡像倉庫,所以在上圖中,鏡像前面會有?docker.io?出現(xiàn)。

      當(dāng)有?Downloaded?字符串輸出的時候,說明下載成功了??!

      1.2 驗證

      讓我們來驗證一下,本地是否存在 Mysql5.7 的鏡像,運行命令:

      docker?images

      驗證本地鏡像是否存在

      可以看到本地的確存在該鏡像,確實是下載成功了!

      1.3 下載鏡像相關(guān)細(xì)節(jié)

      再說說上面下載鏡像的過程:

      Docker 鏡像下載

      通過下載過程,可以看到,一個鏡像一般是由多個層(?layer) 組成,類似?f7e2b70d04ae這樣的串表示層的唯一 ID(實際上完整的 ID 包括了 256 個 bit, 64 個十六進制字符組成)。

      您可能會想,如果多個不同的鏡像中,同時包含了同一個層( layer),這樣重復(fù)下載,豈不是導(dǎo)致了存儲空間的浪費么?

      實際上,Docker 并不會這么傻會去下載重復(fù)的層(?layer),Docker 在下載之前,會去檢測本地是否會有同樣 ID 的層,如果本地已經(jīng)存在了,就直接使用本地的就好了。

      另一個問題,不同倉庫中,可能也會存在鏡像重名的情況發(fā)生, 這種情況咋辦?

      嚴(yán)格意義上,我們在使用?docker pull?命令時,還需要在鏡像前面指定倉庫地址(?Registry), 如果不指定,則 Docker 會使用您默認(rèn)配置的倉庫地址。例如上面,由于我配置的是國內(nèi)?docker.io?的倉庫地址,我在?pull?的時候,docker 會默認(rèn)為我加上?docker.io/library?的前綴。

      如:當(dāng)我執(zhí)行?docker pull mysql:5.7?命令時,實際上相當(dāng)于?docker pull docker.io/mysql:5.7,如果您未自定義配置倉庫,則默認(rèn)在下載的時候,會在鏡像前面加上 DockerHub 的地址。

      Docker 通過前綴地址的不同,來保證不同倉庫中,重名鏡像的唯一性。

      1.4 PULL 子命令

      命令行中輸入:

      docker?pull?--help

      會得到如下信息:

      [root@iZbp1j8y1bab0djl9gdp33Z?~]#?docker?pull?--help

      Usage:??docker?pull?[OPTIONS]?NAME[:TAG|@DIGEST]

      Pull?an?image?or?a?repository?from?a?registry

      Options:??-a,?--all-tags????????????????Download?all?tagged?images?in?the?repository??????--disable-content-trust???Skip?image?verification?(default?true)??????--help????????????????????Print?usage

      我們可以看到主要支持的子命令有:

      -a,--all-tags=true|false: 是否獲取倉庫中所有鏡像,默認(rèn)為否;

      --disable-content-trust: 跳過鏡像內(nèi)容的校驗,默認(rèn)為 true;

      二 Docker 查看鏡像信息

      2.1 images 命令列出鏡像

      通過使用如下兩個命令,列出本機已有的鏡像:

      docker?images

      或:

      docker?image?ls

      如下圖所示:

      Docker 查看鏡像信息

      對上述紅色標(biāo)注的字段做一下解釋:

      REPOSITORY: 來自于哪個倉庫;

      TAG: 鏡像的標(biāo)簽信息,比如 5.7、latest 表示不同的版本信息;

      IMAGE ID: 鏡像的 ID, 如果您看到兩個 ID 完全相同,那么實際上,它們指向的是同一個鏡像,只是標(biāo)簽名稱不同罷了;

      CREATED: 鏡像最后的更新時間;

      SIZE: 鏡像的大小,優(yōu)秀的鏡像一般體積都比較小,這也是我更傾向于使用輕量級的 alpine 版本的原因;

      注意:圖中的鏡像大小信息只是邏輯上的大小信息,因為一個鏡像是由多個鏡像層(?layer)組成的,而相同的鏡像層本地只會存儲一份,所以,真實情況下,占用的物理存儲空間大小,可能會小于邏輯大小。

      2.2 使用 tag 命令為鏡像添加標(biāo)簽

      通常情況下,為了方便在后續(xù)工作中,快速地找到某個鏡像,我們可以使用?docker tag?命令,為本地鏡像添加一個新的標(biāo)簽。如下圖所示:

      Docker tag 添加標(biāo)簽

      為?docker.io/mysql?鏡像,添加新的鏡像標(biāo)簽?allen_mysql:5.7。然后使用?docker images?命令,查看本地鏡像:

      Docker tag 添加標(biāo)簽

      可以看到,本地多了一個?allen_mysql:5.7?的鏡像。細(xì)心的你一定還會發(fā)現(xiàn),?allen_mysql:5.7?和?docker.io/mysql:5.7?的鏡像 ID 是一模一樣的,說明它們是同一個鏡像,只是別名不同而已。

      docker tag?命令功能更像是, 為指定鏡像添加快捷方式一樣。

      2.3 使用 inspect 命令查看鏡像詳細(xì)信息

      通過?docker inspect?命令,我們可以獲取鏡像的詳細(xì)信息,其中,包括創(chuàng)建者,各層的數(shù)字摘要等。

      docker?inspect?docker.io/mysql:5.7

      Docker inspect 查看鏡像詳細(xì)信息

      docker inspect?返回的是?JSON?格式的信息,如果您想獲取其中指定的一項內(nèi)容,可以通過?-f?來指定,如獲取鏡像大?。?/p>

      docker?inspect?-f?{{".Size"}}?docker.io/mysql:5.7

      Docker inspect 查看鏡像詳細(xì)信息

      2.4 使用 history 命令查看鏡像歷史

      前面的小節(jié)中,我們知道了,一個鏡像是由多個層(layer)組成的,那么,我們要如何知道各個層的具體內(nèi)容呢?

      通過?docker history?命令,可以列出各個層(layer)的創(chuàng)建信息,如我們查看?docker.io/mysql:5.7?的各層信息:

      docker?history?docker.io/mysql:5.7

      Docker history 各層信息

      可以看到,上面過長的信息,為了方便展示,后面都省略了,如果您想要看具體信息,可以通過添加?--no-trunc?選項,如下面命令:

      docker?history?--no-trunc?docker.io/mysql:5.7

      三 Docker 搜索鏡像

      3.1 search 命令

      您可以通過下面命令進行搜索:

      docker?search?[option]?keyword

      比如,您想搜索倉庫中?mysql?相關(guān)的鏡像,可以輸入如下命令:

      docker?search?mysql

      Docker 搜索鏡像

      3.2 search 子命令

      命令行輸入?docker search--help, 輸出如下:

      Usage:??docker?search?[OPTIONS]?TERM

      Search?the?Docker?Hub?for?images

      Options:??-f,?--filter?filter???Filter?output?based?on?conditions?provided??????--help????????????Print?usage??????--limit?int???????Max?number?of?search?results?(default?25)??????--no-index????????Don't?truncate?output??????--no-trunc????????Don't?truncate?output

      可以看到?search?支持的子命令有:

      -f,--filter filter: 過濾輸出的內(nèi)容;

      --limitint:指定搜索內(nèi)容展示個數(shù);

      --no-index: 不截斷輸出內(nèi)容;

      --no-trunc:不截斷輸出內(nèi)容;

      舉個列子,比如我們想搜索官方提供的 mysql 鏡像,命令如下:

      docker?search?--filter=is-offical=true?mysql

      Docker 搜索官方鏡像

      再比如,我們想搜索 Stars 數(shù)超過 100 的 mysql 鏡像:

      docker?search?--filter=stars=100?mysql

      Docker 搜索鏡像

      四 Docker 刪除鏡像

      4.1 通過標(biāo)簽刪除鏡像

      通過如下兩個都可以刪除鏡像:

      docker?rmi?[image]

      或者:

      docker?image?rm?[image]

      支持的子命令如下:

      -f,-force: 強制刪除鏡像,即便有容器引用該鏡像;

      -no-prune: 不要刪除未帶標(biāo)簽的父鏡像;

      Docker 查看鏡像信息

      Docker 查看鏡像信息

      例如,我們想刪除上章節(jié)創(chuàng)建的?allen_mysql:5.7?鏡像,命令如下:

      docker?rmi?allen_mysql:5.7

      Docker 刪除鏡像

      從上面章節(jié)中,我們知道?allen_mysql:5.7?和?docker.io/mysql:5.7?實際上指向的是同一個鏡像,那么,您可以能會有疑問,我刪除了?allen_mysql:5.7, 會不會將?docker.io/mysql:5.7?鏡像也給刪除了?

      實際上,當(dāng)同一個鏡像擁有多個標(biāo)簽時,執(zhí)行?docker rmi?命令,只是會刪除了該鏡像眾多標(biāo)簽中,您指定的標(biāo)簽而已,并不會影響原始的那個鏡像文件。

      不信的話,我們可以執(zhí)行?docker images?命令,來看下?docker.io/mysql:5.7?鏡像還在不在:

      Docker 查看鏡像信息

      可以看到,?docker.io/mysql:5.7?鏡像依然存在!

      那么,如果某個鏡像不存在多個標(biāo)簽,當(dāng)且僅當(dāng)只有一個標(biāo)簽時,執(zhí)行刪除命令時,您就要小心了,這會徹底刪除鏡像。

      例如,這個時候,我們再執(zhí)行?docker rmi docker.io/mysql:5.7?命令:

      Docker 刪除鏡像

      從上圖可以看到,我們已經(jīng)刪除了?docker.io/mysql:5.7?鏡像的所有文件層。該鏡像在本地已不復(fù)存在了!

      4.2 通過 ID 刪除鏡像

      除了通過標(biāo)簽名稱來刪除鏡像,我們還可以通過制定鏡像 ID, 來刪除鏡像,如:

      docker?rmi?ee7cbd482336

      一旦制定了通過 ID 來刪除鏡像,它會先嘗試刪除所有指向該鏡像的標(biāo)簽,然后在刪除鏡像本身。

      4.3 刪除鏡像的限制

      刪除鏡像很簡單,但也不是我們何時何地都能刪除的,它存在一些限制條件。

      當(dāng)通過該鏡像創(chuàng)建的容器未被銷毀時,鏡像是無法被刪除的。為了驗證這一點,我們來做個試驗。首先,我們通過?docker pull alpine?命令,拉取一個最新的?alpine?鏡像, 然后啟動鏡像,讓其輸出?hello,docker!:

      Docker run alpine

      接下來,我們來刪除這個鏡像試試:

      Docker 刪除鏡像

      可以看到提示信息,無法刪除該鏡像,因為有容器正在引用他!同時,這段信息還告訴我們,除非通過添加?-f?子命令,也就是強制刪除,才能移除掉該鏡像!

      docker?rmi?-f?docker.io/alpine

      但是,我們一般不推薦這樣暴力的做法,正確的做法應(yīng)該是:

      先刪除引用這個鏡像的容器;

      再刪除這個鏡像;

      也就是,根據(jù)上圖中提示的,引用該鏡像的容器 ID (?9d59e2278553), 執(zhí)行刪除命令:

      docker?rm?9d59e2278553

      然后,再執(zhí)行刪除鏡像的命令:

      docker?rmi?5cb3aa00f899

      Docker 刪除鏡像

      Docker 刪除鏡像

      這個時候,就能正常刪除了!

      4.4 清理鏡像

      我們在使用 Docker 一段時間后,系統(tǒng)一般都會殘存一些臨時的、沒有被使用的鏡像文件,可以通過以下命令進行清理:

      docker?image?prune

      它支持的子命令有:

      -a,--all: 刪除所有沒有用的鏡像,而不僅僅是臨時文件;

      -f,--force:強制刪除鏡像文件,無需彈出提示確認(rèn);

      五 Docker 創(chuàng)建鏡像

      此小節(jié)中,您將學(xué)習(xí) Docker 如何創(chuàng)建鏡像?Docker 創(chuàng)建鏡像主要有三種:

      基于已有的鏡像創(chuàng)建;

      基于 Dockerfile 來創(chuàng)建;

      基于本地模板來導(dǎo)入;

      我們將主要介紹常用的 1,2 兩種。

      5.1 基于已有的鏡像創(chuàng)建

      通過如下命令來創(chuàng)建:

      docker?container?commit

      支持的子命令如下:

      -c,--change=[]: 可以在提交的時候執(zhí)行 Dockerfile 指令,如 CMD、ENTRYPOINT、ENV、EXPOSE、LABEL、ONBUILD、USER、VOLUME、WORIR 等;

      -m,--message="": 提交信息;

      -p,--pause=true: 提交時,暫停容器運行。

      接下來,基于本地已有的 Ubuntu 鏡像,創(chuàng)建一個新的鏡像:

      Docker 創(chuàng)建鏡像

      首先,讓我將它運行起來,并在其中創(chuàng)建一個 test.txt 文件:

      Docker 創(chuàng)建鏡像

      命令如下:

      docker?run?-it?docker.io/ubuntu:latest?/bin/bashroot@a0a0c8cfec3a:/#?touch?test.txtroot@a0a0c8cfec3a:/#?exit

      創(chuàng)建完 test.txt 文件后,需要記住標(biāo)注的容器 ID:?a0a0c8cfec3a, 用它來提交一個新的鏡像(PS: 你也可以通過名稱來提交鏡像,這里只演示通過 ID 的方式)。

      執(zhí)行命令:

      docker?container?commit?-m?"Added?test.txt?file"?-a?"Allen"?a0a0c8cfec3a?test:0.1

      提交成功后,會返回新創(chuàng)建的鏡像 ID 信息,如下圖所示:

      Docker 提交新創(chuàng)建的鏡像

      再次查看本地鏡像信息,可以看到新創(chuàng)建的?test:0.1?鏡像了:

      Docker 查看鏡像信息

      5.2 基于 Dockerfile 創(chuàng)建

      通過 Dockerfile 的方式來創(chuàng)建鏡像,是最常見的一種方式了,也是比較推薦的方式。Dockerfile 是一個文本指令文件,它描述了是如何基于一個父鏡像,來創(chuàng)建一個新鏡像的過程。

      下面讓我們來編寫一個簡單的 Dockerfile 文件,它描述了基于 Ubuntu 父鏡像,安裝 Python3 環(huán)境的鏡像:

      FROM?docker.io/ubuntu:latest

      LABEL?version="1.0"?maintainer="Allen?"

      RUN?apt-get?update?&&?\????apt-get?install?-y?python3?&&?\????apt-get?clean?&&?\????rm?-rf?/var/lib/apt/lists/*

      創(chuàng)建完成后,通過這個 Dockerfile 文件,來構(gòu)建新的鏡像,執(zhí)行命令:

      docker?image?build?-t?python:3?.

      注意:?命令的最后有個點,如果不加的話,會構(gòu)建不成功 !

      Docker 通過 Dockerfile 構(gòu)建鏡像

      編譯成功后,再次查看本地鏡像信息,就可以看到新構(gòu)建的 python:3 鏡像了。

      Docker 查看鏡像信息

      六 Docker 導(dǎo)出&加載鏡像

      此小節(jié)中,您將學(xué)習(xí) Docker 如何導(dǎo)出&加載鏡像。

      通常我們會有下面這種需求,需要將鏡像分享給別人,這個時候,我們可以將鏡像導(dǎo)出成 tar 包,別人直接通過加載這個 tar 包,快速地將鏡像引入到本地鏡像庫。

      要想使用這兩個功能,主要是通過如下兩個命令:

      docker save

      docker load

      6.1 導(dǎo)出鏡像

      查看本地鏡像如下:

      Docker 查看鏡像信息

      例如,我們想要將 python:3 鏡像導(dǎo)出來,執(zhí)行命令:

      docker?save?-o?python_3.tar?python:3

      執(zhí)行成功后,查看當(dāng)前目錄:

      Docker 導(dǎo)出文件

      Docker 導(dǎo)出文件

      可以看到?python_3.tar?鏡像文件已經(jīng)生成。接下來,你可以將它通過復(fù)制的方式,分享給別人了!

      6.2 加載鏡像

      別人拿到了這個?tar?包后,要如何導(dǎo)入到本地的鏡像庫呢?

      通過執(zhí)行如下命令:

      docker?load?-i?python_3.tar

      或者:

      docker?load?

      導(dǎo)入成功后,查看本地鏡像信息,你就可以獲得別人分享的鏡像了!怎么樣,是不是很方便呢!

      七 Docker 上傳鏡像

      我們將以上傳到 Docker Hub 上為示例,演示 Docker 如何上傳鏡像。

      7.1 獲取 Docker ID

      想要上傳鏡像到 Docker Hub 上,首先,我們需要注冊 Docker Hub 賬號。打開 Docker Hub 網(wǎng)址 https://hub.docker.com,開始注冊:

      Docker Hub 注冊賬號

      填寫您的 Docker ID (也就是賬號),以及密碼,Email, 點擊繼續(xù)。

      接下來,Docker Hub 會發(fā)送驗證郵件,到您填寫的郵箱當(dāng)中:

      Docker Hub 驗證郵件

      點擊驗證即可,接下來,再次返回 Docker Hub 官網(wǎng),用您剛剛注冊的 Docker ID 和密碼來登錄賬號!

      Docker Hub 登錄頁面

      7.2 創(chuàng)建鏡像倉庫

      登錄成功后,會出現(xiàn)如下頁面:

      歡迎來到 Docker Hub

      選擇創(chuàng)建一個鏡像倉庫:

      創(chuàng)建 Python 倉庫

      填寫倉庫名稱、描述信息、是否公開后,點擊創(chuàng)建。

      倉庫鏡像展示頁

      倉庫鏡像展示頁

      我們看到,倉庫已經(jīng)創(chuàng)建成功了,但是里面還沒有任何鏡像,接下來開始上傳鏡像,到此新創(chuàng)建的倉庫中。

      7.3 上傳鏡像

      進入命令行,用我們剛剛獲取的 Docker ID 以及密碼登錄,執(zhí)行命令:

      docker?login

      命令行登錄 Docker ID

      命令行登錄 Docker ID

      登錄成功后,我們開始準(zhǔn)備上傳本地的?python:3?鏡像:

      python:3 鏡像

      首先,我們對其打一個新的標(biāo)簽,前綴與我們新創(chuàng)建的 Docker ID 、倉庫名保持一致:

      docker?tag?python:3?weiwosuoai1991/python:3

      python:3 鏡像打標(biāo)簽

      查看本地信息,可以看到,標(biāo)簽打成功了。接下開,開始上傳!執(zhí)行命令:

      docker?push?weiwosuoai1991/python:3

      上傳 python:3 鏡像

      上傳成功!去 Docker Hub 官網(wǎng),新創(chuàng)建的倉庫的信息頁面驗證一下,是否真的成功了:

      倉庫鏡像展示頁

      大工告成?。?!

      八 總結(jié)

      本文中,我們著重學(xué)習(xí)了 Docker 中下載鏡像,、查看鏡像信息、搜索鏡像、刪除鏡像,、創(chuàng)建鏡像、導(dǎo)出&加載鏡像以及向 Docker Hub 上傳鏡像的相關(guān)操作。

      Docker 鏡像服務(wù)

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:敏捷實踐的七個方面(敏捷實踐有哪些)
      下一篇:Android 消息機制【筆記】(android studio)
      相關(guān)文章
      亚洲AⅤ无码一区二区三区在线 | 国产成人亚洲综合| 亚洲乱码无限2021芒果| 人人狠狠综合久久亚洲婷婷| 精品国产亚洲一区二区在线观看 | 亚洲卡一卡2卡三卡4卡无卡三 | 亚洲国产精品福利片在线观看| 中国亚洲女人69内射少妇| 亚洲精品无码专区久久同性男| 国产成人 亚洲欧洲| 99亚洲乱人伦aⅴ精品| 337p日本欧洲亚洲大胆人人| 日韩亚洲国产综合久久久| 国产精品亚洲色婷婷99久久精品| 色婷婷六月亚洲综合香蕉| 国产亚洲男人的天堂在线观看| 国产亚洲精品美女| 亚洲国产av无码精品| 高清在线亚洲精品国产二区| 亚洲国产V高清在线观看| 亚洲日韩在线中文字幕第一页| 2022中文字字幕久亚洲| 亚洲综合国产一区二区三区| 亚洲αv久久久噜噜噜噜噜| 亚洲AV天天做在线观看| 亚洲免费视频网站| 亚洲精品乱码久久久久久下载| 亚洲国产精品网站久久| 亚洲永久在线观看| 亚洲aⅴ无码专区在线观看春色 | 亚洲美女视频免费| 亚洲国产精品张柏芝在线观看| youjizz亚洲| 亚洲码和欧洲码一码二码三码| 精品国产_亚洲人成在线| 亚洲精品第一国产综合精品99 | 亚洲乱色熟女一区二区三区丝袜| 亚洲av日韩av激情亚洲| 亚洲最新黄色网址| 亚洲中文字幕无码久久2020 | 亚洲色欲色欲www在线丝|