亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 服務器 > Web服務器 > 正文

Docker run 命令的使用方法詳解

2024-09-01 13:51:03
字體:
來源:轉載
供稿:網友

注意,本文基于最新的Docker 1.4文檔翻譯。

Docker會在隔離的容器中運行進程。當運行 docker run命令時,Docker會啟動一個進程,并為這個進程分配其獨占的文件系統、網絡資源和以此進程為根進程的進程組。在容器啟動時,鏡像可能已經定義了要運行的二進制文件、暴露的網絡端口等,但是用戶可以通過docker run命令重新定義(譯者注:docker run可以控制一個容器運行時的行為,它可以覆蓋docker build在構建鏡像時的一些默認配置),這也是為什么run命令相比于其它命令有如此多的參數的原因。

命令格式

最基本的docker run命令的格式如下:

$ sudo docker run [OPTIONS] IMAGE[:TAG] [COMMAND] [ARG...]

如果需要查看[OPTIONS]的詳細使用說明,請參考Docker關于OPTIONS的章節。這里僅簡要介紹Run所使用到的參數。

OPTIONS總起來說可以分為兩類:

1.設置運行方式:

決定容器的運行方式,前臺執行還是后臺執行;

設置containerID;

設置網絡參數;

設置容器的CPU和內存參數;- 設置權限和LXC參數;

2.設置鏡像的默認資源,也就是說用戶可以使用該命令來覆蓋在鏡像構建時的一些默認配置。

docker run [OPTIONS]可以讓用戶完全控制容器的生命周期,并允許用戶覆蓋執行docker build時所設定的參數,甚至也可以修改本身由Docker所控制的內核級參數。

Operator exclusive options

當執行docker run時可以設置以下參數:

Detached vs Foreground
Detached (-d)- Foreground
Container Identification
Name (--name)- PID Equivalent
IPC Setting
Network Settings
Clean Up (--rm)
Runtime Constraints on CPU and Memory
Runtime Privilege, Linux Capabilities, and LXC Configuration

接下來我們依次進行介紹。

Detached vs foreground

當我們啟動一個容器時,首先需要確定這個容器是運行在前臺還是運行在后臺。
-d=false: Detached mode: Run container in the background, print new container id

Detached (-d)

如果在docker run后面追加-d=true或者-d,那么容器將會運行在后臺模式。此時所有I/O數據只能通過網絡資源或者共享卷組來進行交互。因為容器不再監聽你執行docker run的這個終端命令行窗口。但你可以通過執行docker attach來重新附著到該容器的回話中。需要注意的是,容器運行在后臺模式下,是不能使用--rm選項的。

Foregroud

在前臺模式下(不指定-d參數即可),Docker會在容器中啟動進程,同時將當前的命令行窗口附著到容器的標準輸入、標準輸出和標準錯誤中。也就是說容器中所有的輸出都可以在當前窗口中看到。甚至它都可以虛擬出一個TTY窗口,來執行信號中斷。這一切都是可以配置的:

-a=[]        : Attach to `STDIN`, `STDOUT` and/or `STDERR`-t=false     : Allocate a pseudo-tty--sig-proxy=true : Proxify all received signal to the process (non-TTY mode only)-i=false     : Keep STDIN open even if not attached

如果在執行run命令時沒有指定-a參數,那么Docker默認會掛載所有標準數據流,包括輸入輸出和錯誤,你可以單獨指定掛載哪個標準流。

$ sudo docker run -a stdin -a stdout -i -t ubuntu /bin/bash

如果要進行交互式操作(例如Shell腳本),那我們必須使用-i -t參數同容器進行數據交互。但是當通過管道同容器進行交互時,就不需要使用-t參數,例如下面的命令:

echo test | docker run -i busybox cat

容器識別

Name(--name)

可以通過三種方式為容器命名:

1. 使用UUID長命名("f78375b1c487e03c9438c729345e54db9d20cfa2ac1fc3494b6eb60872e74778")
2. 使用UUID短命令("f78375b1c487")
3. 使用Name("evil_ptolemy")

這個UUID標示是由Docker deamon生成的。如果你在執行docker run時沒有指定--name,那么deamon會自動生成一個隨機字符串UUID。但是對于一個容器來說有個name會非常方便,當你需要連接其它容器時或者類似需要區分其它容器時,使用容器名稱可以簡化操作。無論容器運行在前臺或者后臺,這個名字都是有效的。

PID equivalent

如果在使用Docker時有自動化的需求,你可以將containerID輸出到指定的文件中(PIDfile),類似于某些應用程序將自身ID輸出到文件中,方便后續腳本操作。

--cidfile="": Write the container ID to the file

Image[:tag]

當一個鏡像的名稱不足以分辨這個鏡像所代表的含義時,你可以通過tag將版本信息添加到run命令中,以執行特定版本的鏡像。例如: docker run ubuntu:14.04

IPC Settings

默認情況下,所有容器都開啟了IPC命名空間。

--ipc="" : Set the IPC mode for the container,  'container:<name|id>': reuses another container's IPC namespace  'host': use the host's IPC namespace inside the container

IPC(POSIX/SysV IPC)命名空間提供了相互隔離的命名共享內存、信號燈變量和消息隊列。

共享內存可以提高進程數據的交互速度。共享內存一般用在數據庫和高性能應用(C/OpenMPI、C++/using boost libraries)上或者金融服務上。如果需要容器中部署上述類型的應用,那么就應該在多個容器直接使用共享內存了。

Network settings

默認情況下,所有的容器都開啟了網絡接口,同時可以接受任何外部的數據請求。

--dns=[]   : Set custom dns servers for the container--net="bridge" : Set the Network mode for the container       'bridge': creates a new network stack for the container on the docker bridge       'none': no networking for this container       'container:<name|id>': reuses another container network stack       'host': use the host network stack inside the container--add-host="" : Add a line to /etc/hosts (host:IP)--mac-address="" : Sets the container's Ethernet device's MAC address

你可以通過docker run --net none來關閉網絡接口,此時將關閉所有網絡數據的輸入輸出,你只能通過STDIN、STDOUT或者files來完成I/O操作。默認情況下,容器使用主機的DNS設置,你也可以通過--dns來覆蓋容器內的DNS設置。同時Docker為容器默認生成一個MAC地址,你可以通過--mac-address 12:34:56:78:9a:bc來設置你自己的MAC地址。

Docker支持的網絡模式有:

none。關閉容器內的網絡連接
bridge。通過veth接口來連接容器,默認配置。
host。允許容器使用host的網絡堆棧信息。 注意:這種方式將允許容器訪問host中類似D-BUS之類的系統服務,所以認為是不安全的。

container。使用另外一個容器的網絡堆棧信息。   

None模式

將網絡模式設置為none時,這個容器將不允許訪問任何外部router。這個容器內部只會有一個loopback接口,而且不存在任何可以訪問外部網絡的router。

Bridge模式

Docker默認會將容器設置為bridge模式。此時在主機上面將會存在一個docker0的網絡接口,同時會針對容器創建一對veth接口。其中一個veth接口是在主機充當網卡橋接作用,另外一個veth接口存在于容器的命名空間中,并且指向容器的loopback。Docker會自動給這個容器分配一個IP,并且將容器內的數據通過橋接轉發到外部。

Host模式

當網絡模式設置為host時,這個容器將完全共享host的網絡堆棧。host所有的網絡接口將完全對容器開放。容器的主機名也會存在于主機的hostname中。這時,容器所有對外暴露的端口和對其它容器的連接,將完全失效。

Container模式

當網絡模式設置為Container時,這個容器將完全復用另外一個容器的網絡堆棧。同時使用時這個容器的名稱必須要符合下面的格式:--net container:<name|id>.

比如當前有一個綁定了本地地址localhost的Redis容器。如果另外一個容器需要復用這個網絡堆棧,則需要如下操作:

$ sudo docker run -d --name redis example/redis --bind 127.0.0.1$ # use the redis container's network stack to access localhost$ sudo docker run --rm -ti --net container:redis example/redis-cli -h 127.0.0.1

管理/etc/hosts

/etc/hosts文件中會包含容器的hostname信息,我們也可以使用--add-host這個參數來動態添加/etc/hosts中的數據。

$ /docker run -ti --add-host db-static:86.75.30.9 ubuntu cat /etc/hosts172.17.0.22  09d03f76bf2cfe00::0   ip6-localnetff00::0   ip6-mcastprefixff02::1   ip6-allnodesff02::2   ip6-allrouters127.0.0.1  localhost::1    localhost ip6-localhost ip6-loopback86.75.30.9  db-static

Clean up (--rm)

默認情況下,每個容器在退出時,它的文件系統也會保存下來,這樣一方面調試會方便些,因為你可以通過查看日志等方式來確定最終狀態。另外一方面,你也可以保存容器所產生的數據。但是當你僅僅需要短暫的運行一個容器,并且這些數據不需要保存,你可能就希望Docker能在容器結束時自動清理其所產生的數據。

這個時候你就需要--rm這個參數了。 注意:--rm 和 -d不能共用!

--rm=false: Automatically remove the container when it exits (incompatible with -d)

Security configuration
--security-opt="label:user:USER"   : Set the label user for the container
--security-opt="label:role:ROLE"   : Set the label role for the container
--security-opt="label:type:TYPE"   : Set the label type for the container
--security-opt="label:level:LEVEL" : Set the label level for the container
--security-opt="label:disable"     : Turn off label confinement for the container
--secutity-opt="apparmor:PROFILE"  : Set the apparmor profile to be applied  to the container

你可以通過--security-opt修改容器默認的schema標簽。比如說,對于一個MLS系統來說(譯者注:MLS應該是指Multiple Listing System),你可以指定MCS/MLS級別。使用下面的命令可以在不同的容器間分享內容:

#docker run --security-opt label:level:s0:c100,c200 -i -t fedora bash

如果是MLS系統,則使用下面的命令:

# docker run --security-opt label:level:TopSecret -i -t rhel7 bash

使用下面的命令可以在容器內禁用安全策略:

# docker run --security-opt label:disable -i -t fedora bash

如果你需要在容器內執行更為嚴格的安全策略,那么你可以為這個容器指定一個策略替代,比如你可以使用下面的命令來指定容器只監聽Apache端口:

# docker run --security-opt label:type:svirt_apache_t -i -t centos bash

注意:此時,你的主機環境中必須存在一個名為svirt_apache_t的安全策略。

Runtime constraints on CPU and memory

下面的參數可以用來調整容器內的性能。

-m="": Memory limit (format: <number><optional unit>, where unit = b, k, m or g)-c=0 : CPU shares (relative weight)

通過docker run -m可以調整容器所使用的內存資源。如果主機支持swap內存,那么可以使用-m可以設定比主機物理內存還大的值。

同樣,通過-c可以調整容器的CPU優先級。默認情況下,所有的容器擁有相同的CPU優先級和CPU調度周期,但你可以通過Docker來通知內核給予某個或某幾個容器更多的CPU計算周期。

比如,我們使用-c或者--cpu-shares =0啟動了C0、C1、C2三個容器,使用-c/--cpu-shares=512啟動了C3容器。這時,C0、C1、C2可以100%的使用CPU資源(1024),但C3只能使用50%的CPU資源(512)。如果這個主機的操作系統是時序調度類型的,每個CPU時間片是100微秒,那么C0、C1、C2將完全使用掉這100微秒,而C3只能使用50微秒。

Runtime privilege, Linux capabilities, and LXC configuration--cap-add: Add Linux capabilities--cap-drop: Drop Linux capabilities--privileged=false: Give extended privileges to this container--device=[]: Allows you to run devices inside the container without the --privileged flag.--lxc-conf=[]: (lxc exec-driver only) Add custom lxc options --lxc-conf="lxc.cgroup.cpuset.cpus = 0,1"

默認情況下,Docker的容器是沒有特權的,例如不能在容器中再啟動一個容器。這是因為默認情況下容器是不能訪問任何其它設備的。但是通過"privileged",容器就擁有了訪問任何其它設備的權限。

當操作者執行docker run --privileged時,Docker將擁有訪問主機所有設備的權限,同時Docker也會在apparmor或者selinux做一些設置,使容器可以容易的訪問那些運行在容器外部的設備。你可以訪問Docker博客來獲取更多關于--privileged的用法。

同時,你也可以限制容器只能訪問一些指定的設備。下面的命令將允許容器只訪問一些特定設備:

$ sudo docker run --device=/dev/snd:/dev/snd ...

  默認情況下,容器擁有對設備的讀、寫、創建設備文件的權限。使用:rwm來配合--device,你可以控制這些權限。

$ sudo docker run --device=/dev/sda:/dev/xvdc --rm -it ubuntu fdisk /dev/xvdcCommand (m for help): q$ sudo docker run --device=/dev/sda:/dev/xvdc:r --rm -it ubuntu fdisk /dev/xvdcYou will not be able to write the partition table.Command (m for help): q$ sudo docker run --device=/dev/sda:/dev/xvdc:w --rm -it ubuntu fdisk /dev/xvdc crash....$ sudo docker run --device=/dev/sda:/dev/xvdc:m --rm -it ubuntu fdisk /dev/xvdcfdisk: unable to open /dev/xvdc: Operation not permitted

使用--cap-add--cap-drop,配合--privileged,你可以更細致的控制人哦怒氣。默認使用這兩個參數的情況下,容器擁有一系列的內核修改權限,這兩個參數都支持all值,如果你想讓某個容器擁有除了MKNOD之外的所有內核權限,那么可以執行下面的命令:

$ sudo docker run --cap-add=ALL --cap-drop=MKNOD ...

如果需要修改網絡接口數據,那么就建議使用--cap-add=NET_ADMIN,而不是使用--privileged。

$ docker run -t -i --rm ubuntu:14.04 ip link add dummy0 type dummyRTNETLINK answers: Operation not permitted$ docker run -t -i --rm --cap-add=NET_ADMIN ubuntu:14.04 ip link add dummy0 type dummy

如果要掛載一個FUSE文件系統,那么就需要--cap-add和--device了。

$ docker run --rm -it --cap-add SYS_ADMIN sshfs sshfs sven@10.10.10.20:/home/sven /mntfuse: failed to open /dev/fuse: Operation not permitted$ docker run --rm -it --device /dev/fuse sshfs sshfs sven@10.10.10.20:/home/sven /mntfusermount: mount failed: Operation not permitted$ docker run --rm -it --cap-add SYS_ADMIN --device /dev/fuse sshfs# sshfs sven@10.10.10.20:/home/sven /mntThe authenticity of host '10.10.10.20 (10.10.10.20)' can't be established.ECDSA key fingerprint is 25:34:85:75:25:b0:17:46:05:19:04:93:b5:dd:5f:c6.Are you sure you want to continue connecting (yes/no)? yessven@10.10.10.20's password:root@30aa0cfaf1b5:/# ls -la /mnt/src/dockertotal 1516drwxrwxr-x 1 1000 1000 4096 Dec 4 06:08 .drwxrwxr-x 1 1000 1000 4096 Dec 4 11:46 ..-rw-rw-r-- 1 1000 1000  16 Oct 8 00:09 .dockerignore-rwxrwxr-x 1 1000 1000 464 Oct 8 00:09 .drone.ymldrwxrwxr-x 1 1000 1000 4096 Dec 4 06:11 .git-rw-rw-r-- 1 1000 1000 461 Dec 4 06:08 .gitignore

如果Docker守護進程在啟動時選擇了lxc lxc-driver(docker -d --exec-driver=lxc),那么就可以使用--lxc-conf來設定LXC參數。但需要注意的是,未來主機上的Docker deamon有可能不會使用LXC,所以這些參數有可能會包含一些沒有實現的配置功能。這意味著,用戶在操作這些參數時必須要十分熟悉LXC。

特別注意:當你使用--lxc-conf修改容器參數后,Docker deamon將不再管理這些參數,那么用戶必須自行進行管理。比如說,你使用--lxc-conf修改了容器的IP地址,那么在/etc/hosts里面是不會自動體現的,需要你自行維護。

Overriding Dockerfile image defaults

  當開發者使用Dockerfile進行build或者使用commit提交容器時,開發人員可以設定一些鏡像默認參數。

這些參數中,有四個是無法被覆蓋的:FROM、MAINTAINER、RUN和ADD,其余參數都可以通過docker run進行覆蓋。我們將介紹如何對這些參數進行覆蓋。

CMD (Default Command or Options)ENTRYPOINT (Default Command to Execute at Runtime)EXPOSE (Incoming Ports)ENV (Environment Variables)VOLUME (Shared Filesystems)USERWORKDIR   CMD (default command or options)$ sudo docker run [OPTIONS] IMAGE[:TAG] [COMMAND] [ARG...]

這個命令中的COMMAND部分是可選的。因為這個IMAGE在build時,開發人員可能已經設定了默認執行的命令。作為操作人員,你可以使用上面命令中新的command來覆蓋舊的command。

如果鏡像中設定了ENTRYPOINT,那么命令中的CMD也可以作為參數追加到ENTRYPOINT中。

ENTRYPOINT (default command to execute at runtime)--entrypoint="": Overwrite the default entrypoint set by the image

這個ENTRYPOINT和COMMAND類似,它指定了當容器執行時,需要啟動哪些進程。相對COMMAND而言,ENTRYPOINT是很難進行覆蓋的,這個ENTRYPOINT可以讓容器設定默認啟動行為,所以當容器啟動時,你可以執行任何一個二進制可執行程序。你也可以通過COMMAND為ENTRYPOINT傳遞參數。但當你需要在容器中執行其它進程時,你就可以指定其它ENTRYPOINT了。

下面就是一個例子,容器可以在啟動時自動執行Shell,然后啟動其它進程。

$ sudo docker run -i -t --entrypoint /bin/bash example/redis#or two examples of how to pass more parameters to that ENTRYPOINT:$ sudo docker run -i -t --entrypoint /bin/bash example/redis -c ls -l$ sudo docker run -i -t --entrypoint /usr/bin/redis-cli example/redis --help

 EXPOSE (incoming ports)

  Dockefile在網絡方面除了提供一個EXPOSE之外,沒有提供其它選項。下面這些參數可以覆蓋Dockefile的expose默認值:

--expose=[]: Expose a port or a range of ports from the container  without publishing it to your host-P=false : Publish all exposed ports to the host interfaces-p=[]  : Publish a container?s port to the host (format:   ip:hostPort:containerPort | ip::containerPort |   hostPort:containerPort | containerPort)   (use 'docker port' to see the actual mapping)--link="" : Add link to another container (name:alias)

  --expose可以讓容器接受外部傳入的數據。容器內監聽的端口不需要和外部主機的端口相同。比如說在容器內部,一個HTTP服務監聽在80端口,對應外部主機的端口就可能是49880.

  如果使用-p或者-P,那么容器會開放部分端口到主機,只要對方可以連接到主機,就可以連接到容器內部。當使用-P時,Docker會在主機中隨機從49153 和65535之間查找一個未被占用的端口綁定到容器。你可以使用docker port來查找這個隨機綁定端口。

當你使用--link方式時,作為客戶端的容器可以通過私有網絡形式訪問到這個容器。同時Docker會在客戶端的容器中設定一些環境變量來記錄綁定的IP和PORT。

ENV (environment variables)HOME Set based on the value of USERHOSTNAME The hostname associated with the containerPATH Includes popular directories, such as :/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/binTERM xterm if the container is allocated a psuedo-TTY

當容器啟動時,會自動在容器中初始化這些變量。

操作人員可以通過-e來設定任意的環境變量,甚至覆蓋已經存在的環境變量,或者是在Dockerfile中通過ENV設定的環境變量。

$ sudo docker run -e "deep=purple" --rm ubuntu /bin/bash -c exportdeclare -x HOME="/"declare -x HOSTNAME="85bc26a0e200"declare -x OLDPWDdeclare -x PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"declare -x PWD="/"declare -x SHLVL="1"declare -x container="lxc"declare -x deep="purple"

操作人員可以通過-h來設定hostname。也可以使用"--link name:alias"來設定環境變量,當使用--link后,Docker將根據后面提供的IP和PORT信息來連接服務端容器。下面就是使用redis的例子:

# Start the service container, named redis-name$ sudo docker run -d --name redis-name dockerfiles/redis4241164edf6f5aca5b0e9e4c9eccd899b0b8080c64c0cd26efe02166c73208f3# The redis-name container exposed port 6379$ sudo docker psCONTAINER ID  IMAGE      COMMAND    CREATED    STATUS    PORTS    NAMES4241164edf6f  $ dockerfiles/redis:latest /redis-stable/src/re 5 seconds ago  Up 4 seconds  6379/tcp   redis-name# Note that there are no public ports exposed since we didn?t use -p or -P$ sudo docker port 4241164edf6f 63792014/01/25 00:55:38 Error: No public port '6379' published for 4241164edf6f

你使用--link后,就可以獲取到關于Redis容器的相關信息。

$ sudo docker run --rm --link redis-name:redis_alias --entrypoint /bin/bash dockerfiles/redis -c exportdeclare -x HOME="/"declare -x HOSTNAME="acda7f7b1cdc"declare -x OLDPWDdeclare -x PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"declare -x PWD="/"declare -x REDIS_ALIAS_NAME="/distracted_wright/redis"declare -x REDIS_ALIAS_PORT="tcp://172.17.0.32:6379"declare -x REDIS_ALIAS_PORT_6379_TCP="tcp://172.17.0.32:6379"declare -x REDIS_ALIAS_PORT_6379_TCP_ADDR="172.17.0.32"declare -x REDIS_ALIAS_PORT_6379_TCP_PORT="6379"declare -x REDIS_ALIAS_PORT_6379_TCP_PROTO="tcp"declare -x SHLVL="1"declare -x container="lxc"#And we can use that information to connect from another container as a client:$ sudo docker run -i -t --rm --link redis-name:redis_alias --entrypoint /bin/bash dockerfiles/redis -c '/redis-stable/src/redis-cli -h $REDIS_ALIAS_PORT_6379_TCP_ADDR -p $REDIS_ALIAS_PORT_6379_TCP_PORT'172.17.0.32:6379>

Docker也會將這個alias的IP地址寫入到/etc/hosts文件中。然后你就可以通過別名來訪問link后的容器。

$ sudo docker run -d --name servicename busybox sleep 30$ sudo docker run -i -t --link servicename:servicealias busybox ping -c 1 servicealias

如果你重啟了源容器(servicename),相關聯的容器也會同步更新/etc/hosts。

VOLUME (shared filesystems)-v=[]: Create a bind mount with: [host-dir]:[container-dir]:[rw|ro]. If "container-dir" is missing, then docker creates a new volume.--volumes-from="": Mount all volumes from the given container(s)

關于volume參數,可以在Managing data in containers查看詳細說明,需要注意的是開發人員可以在Dockerfile中設定多個volume,但是只能由運維人員設置容器直接的volume訪問。

USER

容器中默認的用戶是root,但是開發人員創建新的用戶之后,這些新用戶也是可以使用的。開發人員可以通過Dockerfile的USER設定默認的用戶,并通過"-u "來覆蓋這些參數。

 WORKDIR

容器中默認的工作目錄是根目錄(/)。開發人員可以通過Dockerfile的WORKDIR來設定默認工作目錄,操作人員可以通過"-w"來覆蓋默認的工作目錄。

以上所述是小編給大家介紹的Docker run 命令的使用方法詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VEVB武林網網站的支持!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品电影在线| 91网站免费看| 久久精品视频播放| 高跟丝袜欧美一区| 国产精品99久久久久久久久久久久| 欧美另类极品videosbestfree| 久久久日本电影| 国产精品午夜一区二区欲梦| 亚洲精品美女免费| 九九精品在线观看| 成人性生交大片免费观看嘿嘿视频| 欧美大片大片在线播放| 欧美日韩国产专区| 国产最新精品视频| 欧美电影《睫毛膏》| 亚洲国产高清高潮精品美女| 国产成人激情小视频| 亚洲日韩中文字幕| 久久久久日韩精品久久久男男| 国产精品视频一区二区三区四| 日韩av成人在线观看| 日韩美女在线观看一区| 久久久国产精彩视频美女艺术照福利| 欧美午夜精品久久久久久久| 欧美高清在线播放| 日韩中文在线观看| 8090理伦午夜在线电影| 奇米4444一区二区三区| 日韩中文字幕免费视频| 国产精品亚洲一区二区三区| 欧美日韩国产123| 亚洲精品美女在线观看播放| 欧美在线免费观看| www.久久草.com| 97久久精品视频| 国产专区精品视频| 热久久这里只有精品| 911国产网站尤物在线观看| 欧美亚洲另类制服自拍| 国产精品天天狠天天看| 青青久久av北条麻妃海外网| 国产成人97精品免费看片| 成人有码视频在线播放| 欧美第一淫aaasss性| 亚洲人线精品午夜| 午夜精品福利电影| 两个人的视频www国产精品| 成人激情在线播放| 色婷婷综合久久久久中文字幕1| 亚洲成人久久电影| 久久免费视频网| 国产精品综合网站| 日韩电影大片中文字幕| 日韩在线观看免费高清完整版| 欧美综合激情网| 大桥未久av一区二区三区| 精品久久久久久中文字幕| 国产精品99久久久久久白浆小说| 91精品国产91久久久久福利| 欧美黄色三级网站| 久久中文字幕在线视频| 97视频在线免费观看| 精品国偷自产在线视频| 日韩电影网在线| 成人久久18免费网站图片| 欧美激情视频一区| 国产精品免费久久久久影院| 欧美精品激情视频| 国产精品亚洲网站| 91久久久久久国产精品| 国产精品69久久久久| 亚洲人成在线免费观看| 欧美一级淫片播放口| 精品视频在线观看日韩| 精品国产欧美一区二区三区成人| 亚洲片国产一区一级在线观看| 亚洲欧美中文日韩在线| 亚洲性生活视频在线观看| 亚洲精品美女在线观看播放| 91精品国产色综合| 亚洲国产精品中文| 欧美国产亚洲精品久久久8v| 在线观看中文字幕亚洲| 欧美日韩高清区| 2019中文字幕在线观看| 91亚洲精品久久久久久久久久久久| 国产欧美一区二区三区视频| 亚洲国产欧美一区二区三区久久| 91在线视频九色| 欧美一级淫片播放口| 久久国产精品久久久久久久久久| 欧美大成色www永久网站婷| 国产精品一区二区三区在线播放| 国产一区二区三区视频免费| 色综合91久久精品中文字幕| 久久91精品国产91久久久| 日韩欧美一区二区在线| 欧美一级片免费在线| 日韩中文理论片| 欧美成人午夜激情视频| 色偷偷888欧美精品久久久| 欧美性猛交xxxxx免费看| 亚洲精品美女在线观看| 国产精品国产福利国产秒拍| 成人午夜小视频| 亚洲乱码一区二区| 国产热re99久久6国产精品| 欧美日韩亚洲一区二区| 97av在线播放| 欧美日韩国产中字| 午夜精品一区二区三区在线播放| 久久亚洲综合国产精品99麻豆精品福利| 国内精品久久久久影院优| 欧美激情综合色| 一区二区三欧美| 中文字幕精品av| 国产精品91免费在线| 97视频人免费观看| 亚洲一区二区三区乱码aⅴ蜜桃女| 久久久久国色av免费观看性色| 久久久久久这里只有精品| 国产91在线播放| 国产美女精品免费电影| 国语自产精品视频在线看抢先版图片| 国产福利精品视频| 日韩中文av在线| 亚洲片国产一区一级在线观看| 91久久精品日日躁夜夜躁国产| 亚洲国产日韩欧美综合久久| 亚洲欧美制服第一页| 亚洲精品综合久久中文字幕| 久久91超碰青草是什么| 97视频在线观看免费高清完整版在线观看| 日韩免费观看网站| 国产亚洲精品美女| 欧美夜福利tv在线| 日本不卡免费高清视频| 亚洲午夜精品久久久久久性色| 免费不卡欧美自拍视频| 亚洲天堂av在线免费观看| 国产在线视频欧美| 国产一区视频在线播放| 国产a∨精品一区二区三区不卡| 国产亚洲视频在线| 久热精品视频在线免费观看| 国产欧美日韩视频| 亚洲xxxx3d| 国产精品爽黄69| 久久久国产视频91| 欧美日韩一区二区三区在线免费观看| 精品一区二区三区四区在线| 久久久久国产精品一区| 亚洲欧美成人在线| 国产精品三级美女白浆呻吟| 欧美午夜精品久久久久久久| 日韩av成人在线观看| 精品视频中文字幕| 亚洲国产天堂网精品网站| 一区国产精品视频| 91精品久久久久久久久久| 美女久久久久久久| 亚洲aa中文字幕| 欧美精品电影免费在线观看| 亚洲性生活视频在线观看|