日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Docker入门到精通开发指南(一文搞懂)

發布時間:2024/8/23 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Docker入门到精通开发指南(一文搞懂) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 安裝
    • 官方安裝文檔
    • 具體安裝步驟
      • 1.卸載之前的版本(如果之前未用過忽略該步驟)
      • 2.安裝相關依賴
      • 3.設置docker鏡像
      • 4.安裝docker
        • 安裝latest版本
        • 指定版本安裝
      • 5.啟動docker
      • 6.查看docker版本
      • 7.運行一個docker hello world
      • 8.卸載docker
      • 9.配置阿里云鏡像加速地址
  • docker常用命令
        • docker倉庫搜索
        • 基礎命令
          • docker版本信息
          • docker系統信息
        • 鏡像命令
          • 查看本地主機上所有鏡像
          • 搜索鏡像
          • 下載鏡像
          • 刪除鏡像
          • 批量刪除鏡像
        • 容器命令
          • 下載centos進行測試
            • 下載
            • 啟動
            • 查看正在運行的docker
            • 退出容器
            • 刪除容器
            • 啟動和停止
        • 常用其他命令
          • 查看日志
          • 滾動查看日志,并且打印時間
          • 查看容器內部進程信息
          • 查看docker原信息
          • 進入當前運行的容器
          • 文件從容器內copy到主機上(手動命令行copy)
          • 保存與加載 SAVE LOAD
  • 可視化 Portainer
    • 安裝
    • 具體使用參考文章
  • Commit鏡像
    • 運行一個centos
    • 做一些修改操作
    • 退出容器
    • 提交
  • 數據卷使用
    • 方式一:直接使用命令掛 -v
    • 實戰:Mysql數據卷掛載
    • 方式二:具名掛載、匿名掛載
      • 匿名掛載
      • 具名掛載
      • 指定目錄、具名、匿名三者區別
      • volume 容器內卷信息查看
        • volume ls 查看所有卷
        • volume inspect $VOLUM_NAME 查看卷信息
        • 擴展:指定容器內目錄權限
        • DockerFile掛載volume
        • 容器之間目錄文件共享 --volumes-from
  • DockerFile
    • DockerFile指令
      • 創建一個CentOS
      • 查看我們鏡像的變更記錄
      • DockerFile制作Java項目啟動
  • 發布鏡像
    • 發布鏡像到DockerHub
    • 發布鏡像到阿里云容器服務
  • 自定義網絡
  • 多個自定義網絡連通
    • network connect 連通
  • 實戰
    • Docker 配置Redis集群

安裝

官方安裝文檔

地址:https://docs.docker.com/engine/install/centos/
這里使用Linux安裝

具體安裝步驟

1.卸載之前的版本(如果之前未用過忽略該步驟)

yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine

2.安裝相關依賴

yum install -y yum-utils

3.設置docker鏡像

yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repo

阿里云

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4.安裝docker

安裝latest版本

yum install -y docker-ce docker-ce-cli containerd.io

這里會默認安裝latest版本。

指定版本安裝

  • 查看版本
> yum list docker-ce --showduplicates | sort -r docker-ce.x86_64 3:20.10.9-3.el7 docker-ce-stable docker-ce.x86_64 3:20.10.9-3.el7 @docker-ce-stable docker-ce.x86_64 3:20.10.8-3.el7 docker-ce-stable docker-ce.x86_64 3:20.10.7-3.el7 docker-ce-stable docker-ce.x86_64 3:20.10.6-3.el7 docker-ce-stable docker-ce.x86_64 3:20.10.5-3.el7 docker-ce-stable docker-ce.x86_64 3:20.10.4-3.el7 docker-ce-stable docker-ce.x86_64 3:20.10.3-3.el7 docker-ce-stable ...
  • 指定版本安裝
sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

example:

docker-ce-18.09.1

5.啟動docker

systemctl start docker

6.查看docker版本

> docker version Client: Docker Engine - CommunityVersion: 20.10.9API version: 1.41Go version: go1.16.8Git commit: c2ea9bcBuilt: Mon Oct 4 16:08:14 2021OS/Arch: linux/amd64Context: defaultExperimental: trueServer: Docker Engine - CommunityEngine:Version: 20.10.9API version: 1.41 (minimum version 1.12)Go version: go1.16.8Git commit: 79ea9d3Built: Mon Oct 4 16:06:37 2021OS/Arch: linux/amd64Experimental: falsecontainerd:Version: 1.4.11GitCommit: 5b46e404f6b9f661a205e28d59c982d3634148f8runc:Version: 1.0.2GitCommit: v1.0.2-0-g52b36a2docker-init:Version: 0.19.0GitCommit: de40ad0

7.運行一個docker hello world

docker run hello-world

8.卸載docker

yum remove docker-ce docker-ce-cli containerd.io rm -rf /var/lib/docker rm -rf /var/lib/containerd

9.配置阿里云鏡像加速地址

登錄阿里云->點擊容器鏡像服務

點擊鏡像加速器

服務器配置,重啟生效

sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' {"registry-mirrors": ["https://${自己的id}.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker

docker常用命令

docker倉庫搜索

https://hub.docker.com/search?q=&type=image

基礎命令

docker版本信息
docker version
docker系統信息
docker info

鏡像命令

查看本地主機上所有鏡像
[root@test11 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest feb5d9fea6a5 3 weeks ago 13.3kB redis latest 621ceef7494a 9 months ago 104MB# 說明 REPOSITORY 鏡像的倉庫源 TAG 鏡像的標簽 IMAGE ID 鏡像的id CREATED 鏡像創建的時間 SIZE 鏡像的大小# 其他指令 Options:-a, --all 列出所有鏡像-q, --quiet 只顯示鏡像id
搜索鏡像
[root@test11 ~]# docker search mysql NAME DESCRIPTION STARS OFFICIAL AUTOMATED mysql MySQL is a widely used, open-source relation… 11551 [OK] mariadb MariaDB Server is a high performing open sou… 4398 [OK]
下載鏡像

docker pull 鏡像名[:TAG]

[root@test11 ~]# docker pull mysql Using default tag: latest latest: Pulling from library/mysql b380bbd43752: Pull complete f23cbf2ecc5d: Pull complete 30cfc6c29c0a: Pull complete b38609286cbe: Pull complete 8211d9e66cd6: Pull complete 2313f9eeca4a: Pull complete 7eb487d00da0: Pull complete 4d7421c8152e: Pull complete 77f3d8811a28: Pull complete cce755338cba: Pull complete 69b753046b9f: Pull complete b2e64b0ab53c: Pull complete Digest: sha256:6d7d4524463fe6e2b893ffc2b89543c81dec7ef82fb2020a1b27606666464d87 Status: Downloaded newer image for mysql:latest docker.io/library/mysql:latest

docker pull mysql 與 docker pull docker.io/library/mysql:latest 相同

  • 指定版本下載
docker pull mysql:5.7
刪除鏡像
docker rmi -f IMAGEID|鏡像名稱 #空格可以刪除多個鏡像
批量刪除鏡像
docker rmi -f ${docker images -qa}

容器命令

下載centos進行測試
下載
[root@test11 ~]# docker pull centos Using default tag: latest latest: Pulling from library/centos a1d0c7532777: Pull complete Digest: sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177 Status: Downloaded newer image for centos:latest docker.io/library/centos:latest
啟動
docker run [可選參數] iamge# 參數說明 --name="Name01" 容器名稱 app01 app02,用來區分啟動的容器 -d 后臺方式運行 -it 使用交互方式運行,進入容器查看內容 -p 指定容器的端口-p 主機端口:容器端口 (常用)-p 容器端口 -P # 啟動并進入centos docker run -it 5d0da3dc9764 /bin/bash 或 docker run -it centos /bin/bash#退出容器 exit
查看正在運行的docker
docker ps-a 查看歷史運行過的docker -n=? 顯示最近的容器數量 -q 只顯示容器的編號
退出容器
exit 退出并停止程序 ctrl + P + Q 容器不停止退出
刪除容器
docker rm -f 容器id docker rm -f ${docker ps -qa}# -f 可以刪除在運行的容器,不使用-f只能刪除未在運行的容器
啟動和停止
docker start 容器id # 啟動 docker stop 容器id # 停止 docker restart 容器id # 重啟 docker kill 容器id # 強制停止

常用其他命令

查看日志
# docker logs --helpUsage: docker logs [OPTIONS] CONTAINERFetch the logs of a containerOptions:--details Show extra details provided to logs-f, --follow Follow log output--since string Show logs since timestamp (e.g. 2013-01-02T13:23:37) or relative (e.g. 42m for 42 minutes)--tail string Number of lines to show from the end of the logs (default "all")-t, --timestamps Show timestamps--until string Show logs before a timestamp (e.g. 2013-01-02T13:23:37) or relative (e.g. 42m for 42 minutes)
滾動查看日志,并且打印時間
> docker logs -f --tail 10 -t ${容器id}
查看容器內部進程信息
docker top 容器ID
查看docker原信息
docker inspect 容器id
進入當前運行的容器

方法1(常用)

docker exec -it 容器id /bin/bash # 進入容器后開啟一個新的終端

方法2

docker attach 容器id # 進入當前正在執行的終端
文件從容器內copy到主機上(手動命令行copy)
docker cp 容器id:容器內路徑 目的主機路徑
保存與加載 SAVE LOAD

保存

docker save 963d2d22e6e3 > kafka-eagle-2.0.1-docker.tar

加載

docker load < kafka-eagle-2.0.1-docker.tar # 加載完成后可以查看到 docker images

可視化 Portainer

安裝

docker run -d -p 9000:9000 -v /root/portainer:/data -v /var/run/docker.sock:/var/run/docker.sock --name portainer portainer/portainer

具體使用參考文章

點擊這里

Commit鏡像

主要作用是將自己修改過的一些配置、文件等,提交成一個自己的鏡像,類似于快照的功能。供自己后續使用。

這里用docker centos進行測試,我們再centos中加一些文件,然后commit成一個新的鏡像。

運行一個centos

docker run -it centos /bin/bash

做一些修改操作

# 默認沒有安裝vim [root@f383457af325 /]# vim bash: vim: command not found # 我們安裝下vim [root@f383457af325 /]# yum install vim # 再新增一個文件 [root@f383457af325 ~]# echo '123' > commit-test.txt

退出容器

ctrl + p + q

提交

語法docker commit [OPTIONS] CONTAINERID [REPOSITORY[:TAG]]OPTIONS說明:-a :提交的鏡像作者;-c :使用Dockerfile指令來創建鏡像;-m :提交時的說明文字;-p :在commit時,將容器暫停。

CONTAINERID 是運行容器ID

[root@test11 ~]# docker commit -a "jast" -m "測試commit" f383457af325 test:v1.0.0 sha256:43f512a896d965ad26f9defb9194b1ce87489d2090f2f72e7ed7f4caef1ae908

commit后查看下提交后的image,此時鏡像就提交成功。

[root@test11 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE test v1.0.0 43f512a896d9 29 seconds ago 304MB

啟動commit后的鏡像進行驗證鏡像是否為我們提交時的狀態

# 運行我們commit的images [root@test11 ~]# docker run -it 43f512a896d9 /bin/bash [root@588a36c75d1e /]# cd # 查看我們保存的文件,發現文件與內容都相同 [root@588a36c75d1e ~]# ls anaconda-ks.cfg anaconda-post.log commit-test.txt original-ks.cfg [root@588a36c75d1e ~]# cat commit-test.txt 123

文件內容都為之前我們保存的內容,說明我們commit生效

數據卷使用

將容器內的目錄掛在到Linux,例將容器內的數據庫數據存儲目錄放在Linux中,而不是容器中。

方式一:直接使用命令掛 -v

docker run -it -v 主機目錄:容器內目錄 [-v 主機目錄:容器內目錄]

1.主機目錄不存在則會自動創建
2.修改是雙向的,即雙向綁定/同步的概念,在linux中直接修改主機目錄下的文件,容器內也會同步修改。即便是容器停止,我們再Linux中修改文件,容器再次啟動容器內也會修改。
查看容器掛載信息 Mounts

docker inspect 0b1f6a469354... "Mounts": [{"Type": "bind","Source": "/home/testtest","Destination": "/home","Mode": "","RW": true,"Propagation": "rprivate"}], ...

實戰:Mysql數據卷掛載

[root@test11 ~]# docker run -d -p 3333:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7 83f08abd501cf0ae1bdc6adec5f4e3fc247abd081eb9ae0ec1d04d6b370828e8
  • 掛載配置文件目錄 -v /home/mysql/conf:/etc/mysql/conf.d
  • 掛載數據目錄 -v /home/mysql/data:/var/lib/mysql
  • 指定密碼 -e MYSQL_ROOT_PASSWORD=123456
  • 執行容器名稱 --name mysql01
  • 服務器中測試連接
    查看Linux掛載的目錄,初始化的數據都存在

    [root@test11 data]# ls auto.cnf client-cert.pem ibdata1 ibtmp1 private_key.pem server-key.pem ca-key.pem client-key.pem ib_logfile0 mysql public_key.pem sys ca.pem ib_buffer_pool ib_logfile1 performance_schema server-cert.pem [root@test11 data]# pwd /opt/docker/mysql/data

    在mysql中創建數據庫test_001,查看linux目錄也同時存在,說明數據卷掛載成功

    [root@test11 data]# ls auto.cnf client-cert.pem ibdata1 ibtmp1 private_key.pem server-key.pem ca-key.pem client-key.pem ib_logfile0 mysql public_key.pem sys ca.pem ib_buffer_pool ib_logfile1 performance_schema server-cert.pem test_001

    方式二:具名掛載、匿名掛載

    匿名掛載

    -v 容器內路徑 docker run -d -P --name nginx01 -v /etc/nginx nginx

    具名掛載

    -v 名稱:容器內路徑 docker run -d -P --name nginx02 -v jmgz:/etc/nginx nginx

    指定目錄、具名、匿名三者區別

    -v 容器內路徑 # 匿名掛載 -v 卷名:容器內路徑 # 具名掛載 -v /Linux路徑:容器內路徑 # 指定路徑掛載(使用volume查看不到)docker run -d -P --name nginx02 -v /home/nginx:/etc/nginx nginx docker run -d -P --name nginx02 -v jmgz:/etc/nginx nginx docker run -d -P --name nginx02 -v /etc/nginx nginx

    指定目錄以/開頭
    具名為名稱開頭
    匿名只有一個容器內部的目錄

    volume 容器內卷信息查看

    volume ls 查看所有卷

    [root@test11 volumes]# docker volume ls DRIVER VOLUME NAME local 9c5d88889544e28e1268853fd91705401b29a80394bae71ebe1243d66d9f9243 local 325c6c6fcb0079b2ef18c573d3e76bf0186b8fdd610269f19f2e83ccfe53d7c8 local b24d3abe53938a464810c298f9c02117c686d7fc06c4917932fd69f7e9ded284 local b35cf901596e7bec2dd6244a28873a3b885fc6e4b429e8e27af9629e74884abe local jmgz

    volume inspect $VOLUM_NAME 查看卷信息

    [root@test11 volumes]# docker volume inspect jmgz [{"CreatedAt": "2021-10-21T11:30:13+08:00","Driver": "local","Labels": null,"Mountpoint": "/var/lib/docker/volumes/jmgz/_data","Name": "jmgz","Options": null,"Scope": "local"} ]

    擴展:指定容器內目錄權限

    # -v 容器內路徑:ro rw 改變讀寫權限 ro readonly # 只讀 rw readwrite # 讀寫docker run -d -P --name nginx02 -v jmgz:/etc/nginx:ro nginx docker run -d -P --name nginx02 -v jmgz:/etc/nginx:rw nginx# ro 設置之后容器對容器內的文件只有讀的權限,需要修改只能通過Linux中進行操作

    DockerFile掛載volume

    具體內容在下面DockerFile中介紹
    創建一個文件,名稱隨意,內容如下

    FROM centos # 通過DockerFile掛載 VOLUME ["volume01","volume02"]CMD /bin/bash

    build

    [root@test16 docker]# docker build -f ./build.txt -t jast/centos:1.0 . Sending build context to Docker daemon 2.048kB Step 1/3 : FROM centos---> 5d0da3dc9764 Step 2/3 : VOLUME ["volume01","volume02"]---> Running in 66d549a0c6dd Removing intermediate container 66d549a0c6dd---> 1f81b9a8505c Step 3/3 : CMD /bin/bash---> Running in 04b134fc3f1e Removing intermediate container 04b134fc3f1e---> 61380fa83790 Successfully built 61380fa83790 Successfully tagged jast/centos:1.0

    查看我們生成的鏡像

    [root@test16 docker]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE jast/centos 1.0 61380fa83790 40 seconds ago 231MB centos latest 5d0da3dc9764 5 weeks ago 231MB

    進入容器內查看到我們掛載的目錄,volume01,volume01

    [root@test16 docker]# docker run -it 61380fa83790 /bin/bash [root@c04e995e2ed0 /]# ls bin etc lib lost+found mnt proc run srv tmp var volume02 dev home lib64 media opt root sbin sys usr volume01

    查看我們掛載的目錄

    > docker inspect 7bc94d570d32 ... "Mounts": [{"Type": "volume","Name": "e60e87be382e28ddbc6c03782823c31e12e9bbf50b5931a86c9f0743897a056c","Source": "/var/lib/docker/volumes/e60e87be382e28ddbc6c03782823c31e12e9bbf50b5931a86c9f0743897a056c/_data","Destination": "volume01","Driver": "local","Mode": "","RW": true,"Propagation": ""},{"Type": "volume","Name": "a521e7ac3b134f953d1b7e63c1fc596e10ab9236ca959f97cab8f0ea92d2f79d","Source": "/var/lib/docker/volumes/a521e7ac3b134f953d1b7e63c1fc596e10ab9236ca959f97cab8f0ea92d2f79d/_data","Destination": "volume02","Driver": "local","Mode": "","RW": true,"Propagation": ""}]...

    容器之間目錄文件共享 --volumes-from

    主要應用場景:比如我們配置文件共享

    # 運行第一個centos容器(上一個步驟的生成的鏡像掛載了兩個目錄volume01,volume02) > docker run -it 61380fa83790 /bin/bash # 運行第二個容器,通過--volumes-from與01的容器數據卷共享 > docker run -it --name docker02 --volumes-from ${繼承的掛載volumes} ${需要闖將的images} > docker run -it --name docker02 --volumes-from 7bc94d570d32 centos

    在docker02中寫入數據,然后在docker01中查看發現可以正常看到

    [root@test16 ~]# docker attach 7bc94d570d32 [root@7bc94d570d32 /]# ls bin etc lib lost+found mnt proc run srv tmp var volume02 dev home lib64 media opt root sbin sys usr volume01 [root@7bc94d570d32 /]# cd volume01/ [root@7bc94d570d32 volume01]# ls [root@7bc94d570d32 volume01]# touch 123 [root@7bc94d570d32 volume01]# ls 123# 另外一個docker [root@0e37a1ad8df4 /]# cd volume01/ [root@0e37a1ad8df4 volume01]# ls 123

    多個容器之間也可以通過該方法進行數據共享,同時刪除某一個容器,其他容器數據是不會刪除的。(數據時間是復制同步關系)

    DockerFile

    Dockerfile是一個包含用于組合映像的命令的文本文檔??梢允褂迷诿钚兄姓{用任何命令。 Docker通過讀取Dockerfile中的指令自動生成映像。

    DockerFile:構建文件
    DockerImages:通過DockerFile構建生成的鏡像,最終發布和運行
    Docker 容器:容器是鏡像運行起來提供服務的

    DockerFile指令

    指令說明
    FROM基礎鏡鏡像
    MAINTAINER鏡像作者信息
    RUN鏡像構建的時候需要運行的命令
    ADDCOPY文件,會自動解壓
    WORKDIR鏡像的工作目錄
    VOLUME掛載的目錄
    EXPOSE暴露端口配置,這里配置了就不需要在啟動時使用-p進行配置
    CMD指定這個容器啟動的時候曼運行的命令,只有最后一個會生效,可被替代
    ENTRYPOINT與CMD類似,指定這個容器啟動的時候要運行的命令,可以追加命令
    ONBUILD當構建一個被繼承DockerFile 這個時候就會運行ONBUILD 的指令。觸發指令。
    COPY類似ADD。將我們文件拷貝到鏡像中
    ENV構建的時候設置環境變量

    創建一個CentOS

    我們在基礎的centos中安裝vim與ifconfig命令

    # 集成centos基礎版本 FROM centos # 作者信息 MAINTAINER jast # 設置工作目錄,即進入容器后默認目錄 ENV MYPATH /usr/local # WORKDIR $MYPATHRUN yum -y install vim RUN yum -y install net-toolsEXPOSE 80CMD echo $MYPATH CMD /bin/bash

    build

    docker build -f ./centos.dockerfile -t jast-centos:0.0.1 .

    -f centos.dockerfile是指定我們dockerfile文件,如果我們文件命名為Dockerfile 則不用指定 -f,系統會默認獲取該文件

    我們進入我們創建好的centos,發現進入容器后,當前目錄為我們剛剛設置的工作目錄;vim與ifconfig命令都可以使用,說明我們的設置生效

    [root@test16 docker]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE jast-centos 0.0.1 0eb128178c9e 14 minutes ago 336MB jast/centos 1.0 61380fa83790 18 hours ago 231MB centos latest 5d0da3dc9764 5 weeks ago 231MB [root@test16 docker]# docker run -it 0eb128178c9e /bin/bash [root@2689dd9fc60e local]# pwd /usr/local [root@2689dd9fc60e local]# echo $MYPATH /usr/local [root@2689dd9fc60e local]# ifconfig eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 172.17.0.4 netmask 255.255.0.0 broadcast 172.17.255.255ether 02:42:ac:11:00:04 txqueuelen 0 (Ethernet)RX packets 8 bytes 648 (648.0 B)RX errors 0 dropped 0 overruns 0 frame 0TX packets 0 bytes 0 (0.0 B)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536inet 127.0.0.1 netmask 255.0.0.0loop txqueuelen 1 (Local Loopback)RX packets 0 bytes 0 (0.0 B)RX errors 0 dropped 0 overruns 0 frame 0TX packets 0 bytes 0 (0.0 B)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

    查看我們鏡像的變更記錄

    docker history $IMAGEID

    [root@test16 docker]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE jast-centos 0.0.1 0eb128178c9e 21 minutes ago 336MB jast/centos 1.0 61380fa83790 18 hours ago 231MB centos latest 5d0da3dc9764 5 weeks ago 231MB [root@test16 docker]# docker history 0eb128178c9e IMAGE CREATED CREATED BY SIZE COMMENT 0eb128178c9e 21 minutes ago /bin/sh -c #(nop) CMD ["/bin/sh" "-c" "/bin… 0B 62a81bb2ccbb 21 minutes ago /bin/sh -c #(nop) CMD ["/bin/sh" "-c" "echo… 0B b243f2d95c88 21 minutes ago /bin/sh -c #(nop) EXPOSE 80 0B 37365b1cd9f0 21 minutes ago /bin/sh -c yum -y install net-tools 32.4MB 0d1152378bdc 21 minutes ago /bin/sh -c yum -y install vim 72.7MB dcf50fca935d 29 minutes ago /bin/sh -c #(nop) WORKDIR /usr/local 0B da408c837890 29 minutes ago /bin/sh -c #(nop) ENV MYPATH=/usr/local 0B 45b873abd869 29 minutes ago /bin/sh -c #(nop) MAINTAINER jast 0B 5d0da3dc9764 5 weeks ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0B <missing> 5 weeks ago /bin/sh -c #(nop) LABEL org.label-schema.sc… 0B <missing> 5 weeks ago /bin/sh -c #(nop) ADD file:805cb5e15fb6e0bb0… 231MB

    CMD 與 ENTRYPOINT 區別
    大家可以參考:https://blog.csdn.net/u010900754/article/details/78526443

    DockerFile制作Java項目啟動

    編寫dockerfile

    FROM centos # 添加jdk,使用ADD docker會自動解壓 ADD jdk-8u311-linux-x64.tar.gz /opt # 將我們準備的java程序文件復制到容器內的/opt/app中 COPY app /opt/appWORKDIR /opt/appENV JAVA_HOME /opt/jdk1.8.0_311 ENV CLASSPATH .:$CLASSPATH:$JAVA_HOME/lib ENV PATH $PATH:$JAVA_HOME/binENTRYPOINT ["java","-cp","lib/*:test.jar","jast.temp.PrintInfo"]

    app目錄

    [root@test16 app]# ls -l 總用量 44 drwxr-xr-x. 2 root root 4096 1022 14:24 lib drwxr-xr-x. 2 root root 6 1022 15:47 logs -rw-r--r--. 1 root root 95 1022 15:49 run.sh -rw-r--r--. 1 root root 33262 1022 14:24 test.jar

    java文件中內容就是簡單的輸出日期,內容如下

    public class PrintInfo {public static void main(String[] args) throws InterruptedException {while(true){System.out.println(new Date());Thread.sleep(1000);}} }

    build鏡像

    [root@test16 jast-springboot-docker]# docker build -t jast-test-docker . Sending build context to Docker daemon 554.4MB Step 1/8 : FROM centos---> 5d0da3dc9764 Step 2/8 : ADD jdk-8u311-linux-x64.tar.gz /opt---> 365ac8e7b845 Step 3/8 : COPY app /opt/app---> bddc1407e654 Step 4/8 : WORKDIR /opt/app---> Running in ba2637ebeefe Removing intermediate container ba2637ebeefe---> a6164e29c00c Step 5/8 : ENV JAVA_HOME /opt/jdk1.8.0_311---> Running in 89e6ab05eafa Removing intermediate container 89e6ab05eafa---> 3683f68f453b Step 6/8 : ENV CLASSPATH .:$CLASSPATH:$JAVA_HOME/lib---> Running in 3dc4b2664744 Removing intermediate container 3dc4b2664744---> c34ccb48d6c0 Step 7/8 : ENV PATH $PATH:$JAVA_HOME/bin---> Running in dd094c4d0722 Removing intermediate container dd094c4d0722---> 6d9d3ba4b4f0 Step 8/8 : ENTRYPOINT ["java","-cp","lib/*:test.jar","jast.temp.PrintInfo"]---> Running in 7c22e3aa6764 Removing intermediate container 7c22e3aa6764---> ab512eecb1b7 Successfully built ab512eecb1b7 Successfully tagged jast-test-docker:latest

    查看鏡像

    [root@test16 jast-springboot-docker]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE jast-test-docker latest ab512eecb1b7 3 minutes ago 638MB jast-centos 0.0.1 0eb128178c9e 3 hours ago 336MB

    直接運行鏡像,直接輸出我們java程序中打印的內容

    [root@test16 jast-springboot-docker]# docker run -it jast-test-docker Fri Oct 22 06:41:19 UTC 2021 Fri Oct 22 06:41:20 UTC 2021 Fri Oct 22 06:41:21 UTC 2021 Fri Oct 22 06:41:22 UTC 2021 Fri Oct 22 06:41:23 UTC 2021 Fri Oct 22 06:41:24 UTC 2021

    這里發現我們直接是打印的日志,我們稍微改動一下,讓java程序在后臺運行,日志輸出到我們Linux服務器中

    修改下配置文件

    FROM centosADD jdk-8u311-linux-x64.tar.gz /optCOPY app /opt/appWORKDIR /opt/appENV JAVA_HOME /opt/jdk1.8.0_311 ENV CLASSPATH .:$CLASSPATH:$JAVA_HOME/lib ENV PATH $PATH:$JAVA_HOME/binVOLUME ["/opt/app/logs"]ENTRYPOINT ["sh","run.sh"]

    run.sh內容為,可以通過腳本run.sh啟動多個進程,但是必須有一個前臺運行的進程,否則docker啟動后會自動停止,這里我們使用的是tial -f

    [root@test16 jast-springboot-docker]# cd app/ [root@test16 app]# ls lib logs run.sh test.jar [root@test16 app]# cat run.sh nohup java -cp lib/*:test.jar jast.temp.PrintInfo > logs/result.log & tail -f logs/result.log

    build

    docker build -t jast-test-docker:0.1.0 .

    運行

    查看我們掛載的日志目錄

    [root@test16 jast-springboot-docker]# docker inspect 8f06b7834337 ... "Mounts": [{"Type": "volume","Name": "69ff1b332431a43e202cc0eb089b49f9944be5be88cc24a4b259f3606f693c21","Source": "/var/lib/docker/volumes/69ff1b332431a43e202cc0eb089b49f9944be5be88cc24a4b259f3606f693c21/_data","Destination": "/opt/app/logs","Driver": "local","Mode": "","RW": true,"Propagation": ""}]

    查看Linux掛載出來的目錄下的日志

    [root@test16 app]# tailf /var/lib/docker/volumes/69ff1b332431a43e202cc0eb089b49f9944be5be88cc24a4b259f3606f693c21/_data/result.log Fri Oct 22 08:03:05 UTC 2021 Fri Oct 22 08:03:06 UTC 2021 Fri Oct 22 08:03:07 UTC 2021 Fri Oct 22 08:03:08 UTC 2021 Fri Oct 22 08:03:09 UTC 2021 Fri Oct 22 08:03:10 UTC 2021 Fri Oct 22 08:03:11 UTC 2021 Fri Oct 22 08:03:12 UTC 2021 Fri Oct 22 08:03:13 UTC 2021 Fri Oct 22 08:03:14 UTC 2021 Fri Oct 22 08:03:15 UTC 2021

    進入容器查看容器內result.log日志,發現相同,說明我們創建成功。

    [root@test16 app]# docker exec -it 8f06b7834337 /bin/bash [root@8f06b7834337 app]# ls lib logs run.sh test.jar [root@8f06b7834337 app]# tail -f logs/result.log Fri Oct 22 08:05:01 UTC 2021 Fri Oct 22 08:05:02 UTC 2021 Fri Oct 22 08:05:03 UTC 2021 Fri Oct 22 08:05:04 UTC 2021 Fri Oct 22 08:05:05 UTC 2021 Fri Oct 22 08:05:06 UTC 2021 Fri Oct 22 08:05:07 UTC 2021 Fri Oct 22 08:05:08 UTC 2021 Fri Oct 22 08:05:09 UTC 2021 Fri Oct 22 08:05:10 UTC 2021 Fri Oct 22 08:05:11 UTC 2021

    發布鏡像

    發布鏡像到DockerHub

    發布本地的鏡像
    本地我們鏡像命名可能會不規范,發布時想重新命名進行發布到DockerHub我們可以使用docker tag命令
    格式
    docker tag $IMAGEID $新的標簽[:版本]
    docker tag 66c054090a43 jast/tag:1.0

    [root@test16 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE jast-test-docker 0.1.0 66c054090a43 47 minutes ago 638MB [root@test16 ~]# docker tag 66c054090a43 jast/tag:1.0 [root@test16 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE jast-test-docker 0.1.0 66c054090a43 47 minutes ago 638MB jast/tag 1.0 66c054090a43 47 minutes ago 638MB

    登錄
    (需要先進行賬號注冊,地址:https://hub.docker.com)

    docker login -u username

    發布

    docker push jast/tag:1.0

    發布鏡像到阿里云容器服務

  • 登錄阿里云進入鏡像服務 創建命名空間
  • 2. 創建鏡像倉庫

  • 創建完成后會自動彈出說明
  • 在Linux服務器中登錄
  • 登錄阿里云Docker Registry

    $ docker login --username=tb7****6464 registry.cn-hangzhou.aliyuncs.com

    用于登錄的用戶名為阿里云賬號全名,密碼為開通服務時設置的密碼。
    您可以在訪問憑證頁面修改憑證密碼。

    登錄成功

    [root@test16 ~]# docker login --username=username registry.cn-hangzhou.aliyuncs.com Password: WARNING! Your password will be stored unencrypted in /root/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-storeLogin Succeeded

    push鏡像到阿里云倉庫
    官方介紹如下

    $ docker login --username=aliyunUsername registry.cn-hangzhou.aliyuncs.com $ docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/jast-zsh/jast-test:[鏡像版本號] $ docker push registry.cn-hangzhou.aliyuncs.com/jast-zsh/jast-test:[鏡像版本號]請根據實際鏡像信息替換示例中的[ImageId][鏡像版本號]參數。

    實際操作

    [root@test16 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE jast-test-docker 0.1.0 66c054090a43 2 hours ago 638MB [root@test16 ~]# docker tag 66c054090a43 registry.cn-hangzhou.aliyuncs.com/jast-zsh/jast-test:0.0.1 [root@test16 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE jast-test-docker 0.1.0 66c054090a43 2 hours ago 638MB registry.cn-hangzhou.aliyuncs.com/jast-zsh/jast-test 0.0.1 66c054090a43 2 hours ago 638MB# 上傳到阿里云倉庫 [root@test16 ~]# docker push registry.cn-hangzhou.aliyuncs.com/jast-zsh/jast-test:0.0.1 The push refers to repository [registry.cn-hangzhou.aliyuncs.com/jast-zsh/jast-test] 27b2dc42c067: Pushed 7e28f1f4e30c: Pushed 74ddd0ec08fa: Pushed 0.0.1: digest: sha256:20d452aa1528bb8e1f236781a74b9e5e4af657470dfb6936af6dbc827923c5aa size: 954

    在阿里云上查看鏡像


    發現成功上傳

    在Linux服務器上拉取鏡像
    官方介紹

    $ docker pull registry.cn-hangzhou.aliyuncs.com/jast-zsh/jast-test:[鏡像版本號]

    實際拉取操作,可以看到我們拉取回來的鏡像

    [root@test16 ~]# docker pull registry.cn-hangzhou.aliyuncs.com/jast-zsh/jast-test:0.0.1 0.0.1: Pulling from jast-zsh/jast-test a1d0c7532777: Already exists 56ca049bf4be: Already exists 524200aa718d: Already exists Digest: sha256:20d452aa1528bb8e1f236781a74b9e5e4af657470dfb6936af6dbc827923c5aa Status: Downloaded newer image for registry.cn-hangzhou.aliyuncs.com/jast-zsh/jast-test:0.0.1 registry.cn-hangzhou.aliyuncs.com/jast-zsh/jast-test:0.0.1 [root@test16 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE registry.cn-hangzhou.aliyuncs.com/jast-zsh/jast-test 0.0.1 66c054090a43 2 hours ago 638MB

    自定義網絡

    查看所有docker網絡

    [root@test16 ~]# docker network ls NETWORK ID NAME DRIVER SCOPE cadbbb004519 bridge bridge local e678c05db7a8 host host local d83c97dd3227 none null local

    網絡模式

    網絡模式模式說明
    bridge橋接 docker默認
    none不配置網絡
    host和宿主機共享網絡
    container容器內網絡互連

    正常我們一臺服務器兩個不同容器之間可以通過ip ping通,但是無法ping 通服務器host(可以通過–link進行連接,一般不使用該方法比較麻煩);我們通過自己創建網絡進行互聯

    創建網絡

    # 這里設置盡量設置一個不常用的ip,測試時候我使用了192.168.0.0/16,直接導致服務器網絡連接不上,估計是沖突了~ [root@test16 ~]# docker network create --driver bridge --subnet 192.160.0.0/16 --gateway 192.160.0.1 mynet 3f0facb7582af42f42acb8e59c4bcc254d57de9425d8d7433beea00d92fcc52c

    docker查看所有網絡

    [root@test16 ~]# docker network ls NETWORK ID NAME DRIVER SCOPE cadbbb004519 bridge bridge local e678c05db7a8 host host local 3f0facb7582a mynet bridge local d83c97dd3227 none null local

    查看創建的網絡詳情

    [root@test16 ~]# docker network inspect mynet [{"Name": "mynet","Id": "3f0facb7582af42f42acb8e59c4bcc254d57de9425d8d7433beea00d92fcc52c","Created": "2021-10-22T20:58:28.703557023+08:00","Scope": "local","Driver": "bridge","EnableIPv6": false,"IPAM": {"Driver": "default","Options": {},"Config": [{"Subnet": "192.160.0.0/16","Gateway": "192.160.0.1"}]},"Internal": false,"Attachable": false,"Ingress": false,"ConfigFrom": {"Network": ""},"ConfigOnly": false,"Containers": {},"Options": {},"Labels": {}} ]

    創建兩個鏡像并使用我們自己創建的網絡

    [root@test16 ~]# docker run -d -P --name jast-net-01 --net mynet registry.cn-hangzhou.aliyuncs.com/jast-zsh/jast-test:0.0.1 6703b0bd420cc0c1c63a27a23a5d18dbef7534f5a90cb6d54c6b2bde494dd0f8 [root@test16 ~]# docker run -d -P --name jast-net-02 --net mynet registry.cn-hangzhou.aliyuncs.com/jast-zsh/jast-test:0.0.1 db3c9bf811cc5b111e95d3250f762ecaad75464f16722dc80b3f2ae4047c31a4

    此時我們使用tomcate-net-01 可以直接通過host ping tomcat-net-02

    [root@test16 ~]# docker exec -it jast-net-02 ping jast-net-01 PING jast-net-01 (192.160.0.5) 56(84) bytes of data. 64 bytes from jast-net-01.mynet (192.160.0.5): icmp_seq=1 ttl=64 time=0.047 ms 64 bytes from jast-net-01.mynet (192.160.0.5): icmp_seq=2 ttl=64 time=0.049 ms --- jast-net-01 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1000ms rtt min/avg/max/mdev = 0.047/0.048/0.049/0.001 ms [root@test16 ~]# docker exec -it jast-net-01 ping jast-net-02 PING jast-net-02 (192.160.0.6) 56(84) bytes of data. 64 bytes from jast-net-02.mynet (192.160.0.6): icmp_seq=1 ttl=64 time=0.034 ms 64 bytes from jast-net-02.mynet (192.160.0.6): icmp_seq=2 ttl=64 time=0.062 ms --- jast-net-02 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1000ms rtt min/avg/max/mdev = 0.034/0.048/0.062/0.014 ms

    多個自定義網絡連通

    問題:我們創建mynet,在mynet網絡下的服務都是網絡互通,如果我們再創建myent2。mynet與mynet2如何連通?

    network connect 連通

    創建兩個連接默認網絡的鏡像

    [root@test16 ~]# docker run -d -P --name jast-01 registry.cn-hangzhou.aliyuncs.com/jast-zsh/jast-test:0.0.1 da7e002a63148a5a9cf930bce4643bfcb0b7ad2d7d02e9928c5405c35b892173 [root@test16 ~]# docker run -d -P --name jast-02 registry.cn-hangzhou.aliyuncs.com/jast-zsh/jast-test:0.0.1 c40f3f5afa686160142b15321a1c334e5bd017dde5e3611aab1ab0b88ce21f86

    此時我們有四個容器在運行

    [root@test16 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c40f3f5afa68 registry.cn-hangzhou.aliyuncs.com/jast-zsh/jast-test:0.0.1 "sh run.sh" About a minute ago Up About a minute jast-02 da7e002a6314 registry.cn-hangzhou.aliyuncs.com/jast-zsh/jast-test:0.0.1 "sh run.sh" About a minute ago Up About a minute jast-01 db3c9bf811cc registry.cn-hangzhou.aliyuncs.com/jast-zsh/jast-test:0.0.1 "sh run.sh" 7 minutes ago Up 7 minutes jast-net-02 6703b0bd420c registry.cn-hangzhou.aliyuncs.com/jast-zsh/jast-test:0.0.1 "sh run.sh" 7 minutes ago Up 7 minutes jast-net-01

    此時用jast-01 ping jast-net-01是不通的

    [root@test16 ~]# docker exec -it jast-01 ping jast-net-01 ping: jast-net-01: Name or service not known

    使用connect連接

    [root@test16 ~]# docker network connect --helpUsage: docker network connect [OPTIONS] NETWORK CONTAINERConnect a container to a networkOptions:--alias strings Add network-scoped alias for the container--driver-opt strings driver options for the network--ip string IPv4 address (e.g., 172.30.100.104)--ip6 string IPv6 address (e.g., 2001:db8::33)--link list Add link to another container--link-local-ip strings Add a link-local address for the container docker network connect mynet jast-01

    連通之后查看我們的網絡信息

    [root@test16 ~]# docker network inspect mynet

    發現jast-01 已經在我們mynet網絡下

    再次ping,發現網絡已經通了

    [root@test16 ~]# docker exec -it jast-01 ping jast-net-01 PING jast-net-01 (192.160.0.5) 56(84) bytes of data. 64 bytes from jast-net-01.mynet (192.160.0.5): icmp_seq=1 ttl=64 time=0.096 ms 64 bytes from jast-net-01.mynet (192.160.0.5): icmp_seq=2 ttl=64 time=0.043 ms

    實戰

    Docker 配置Redis集群

    我們要搭建的Redis集群為三主三從

  • 配置網絡
  • [root@test16 ~]# docker network create --driver bridge --subnet 192.150.0.0/16 --gateway 192.150.0.1 redis-net bbbed9e601f6d35212378762b857b9eaf752fbe6bb2d40cc1ac10346a9590015
  • 使用腳本創建6個reids節點配置文件
  • for port in $(seq 1 6); \ do \ mkdir -p /home/jast/docker/redis/node-${port}/conf touch /home/jast/docker/redis/node-${port}/conf/redis.conf cat << EOF > /home/jast/docker/redis/node-${port}/conf/redis.conf port 6379 bind 0.0.0.0 cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 cluster-announce-ip 192.150.0.1${port} cluster-announce-port 6379 cluster-announce-bus-port 16379 appendonly yes EOF done [root@test16 redis]# tree . ├── create_conf.sh ├── node-1 │ └── conf │ └── redis.conf ├── node-2 │ └── conf │ └── redis.conf ├── node-3 │ └── conf │ └── redis.conf ├── node-4 │ └── conf │ └── redis.conf ├── node-5 │ └── conf │ └── redis.conf └── node-6└── conf└── redis.conf12 directories, 7 files
  • 創建6個容器
  • docker run -p 6371:6379 -p 16371:16379 --name redis-cluster-1 \ -v /home/jast/docker/redis/node-1/data:/data \ -v /home/jast/docker/redis/node-1/conf/redis.conf:/etc/redis/redis.conf \ -d --net redis-net --ip 192.150.0.11 redis redis-server /etc/redis/redis.confdocker run -p 6372:6379 -p 16372:16379 --name redis-cluster-2 \ -v /home/jast/docker/redis/node-2/data:/data \ -v /home/jast/docker/redis/node-2/conf/redis.conf:/etc/redis/redis.conf \ -d --net redis-net --ip 192.150.0.12 redis redis-server /etc/redis/redis.confdocker run -p 6373:6379 -p 16373:16379 --name redis-cluster-3 \ -v /home/jast/docker/redis/node-3/data:/data \ -v /home/jast/docker/redis/node-3/conf/redis.conf:/etc/redis/redis.conf \ -d --net redis-net --ip 192.150.0.13 redis redis-server /etc/redis/redis.confdocker run -p 6374:6379 -p 16374:16379 --name redis-cluster-4 \ -v /home/jast/docker/redis/node-4/data:/data \ -v /home/jast/docker/redis/node-4/conf/redis.conf:/etc/redis/redis.conf \ -d --net redis-net --ip 192.150.0.14 redis redis-server /etc/redis/redis.confdocker run -p 6375:6379 -p 16375:16379 --name redis-cluster-5 \ -v /home/jast/docker/redis/node-5/data:/data \ -v /home/jast/docker/redis/node-5/conf/redis.conf:/etc/redis/redis.conf \ -d --net redis-net --ip 192.150.0.15 redis redis-server /etc/redis/redis.confdocker run -p 6376:6379 -p 16376:16379 --name redis-cluster-6 \ -v /home/jast/docker/redis/node-6/data:/data \ -v /home/jast/docker/redis/node-6/conf/redis.conf:/etc/redis/redis.conf \ -d --net redis-net --ip 192.150.0.16 redis redis-server /etc/redis/redis.conf
  • 創建集群
    進入容器內部,執行redis-cli 命令初始化創建集群
  • # redis-cli --cluster create 192.150.0.11:6379 192.150.0.12:6379 192.150.0.13:6379 192.150.0.14:6379 192.150.0.15:6379 192.150.0.16:6379 --cluster-replicas 1 >>> Performing hash slots allocation on 6 nodes... Master[0] -> Slots 0 - 5460 Master[1] -> Slots 5461 - 10922 Master[2] -> Slots 10923 - 16383 Adding replica 192.150.0.15:6379 to 192.150.0.11:6379 Adding replica 192.150.0.16:6379 to 192.150.0.12:6379 Adding replica 192.150.0.14:6379 to 192.150.0.13:6379 M: 2b1b770fcf8dd5cb230d0562aa17207d43e97587 192.150.0.11:6379slots:[0-5460] (5461 slots) master M: 617a0c5fbba78c083f277f74cd799413a03c4c8c 192.150.0.12:6379slots:[5461-10922] (5462 slots) master M: 2043ae4e89512f7a532e5ac6bacab9b7e32fb36d 192.150.0.13:6379slots:[10923-16383] (5461 slots) master S: 9393eacec8f654913952819e6181d929a9536dc8 192.150.0.14:6379replicates 2043ae4e89512f7a532e5ac6bacab9b7e32fb36d S: 018099d52339c4c417316027dcb7a7e8ee8ff930 192.150.0.15:6379replicates 2b1b770fcf8dd5cb230d0562aa17207d43e97587 S: 7c82f60bd2586d2c7249237d1e0383d82627a136 192.150.0.16:6379replicates 617a0c5fbba78c083f277f74cd799413a03c4c8c Can I set the above configuration? (type 'yes' to accept): yes >>> Nodes configuration updated >>> Assign a different config epoch to each node >>> Sending CLUSTER MEET messages to join the cluster Waiting for the cluster to join . >>> Performing Cluster Check (using node 192.150.0.11:6379) M: 2b1b770fcf8dd5cb230d0562aa17207d43e97587 192.150.0.11:6379slots:[0-5460] (5461 slots) master1 additional replica(s) M: 2043ae4e89512f7a532e5ac6bacab9b7e32fb36d 192.150.0.13:6379slots:[10923-16383] (5461 slots) master1 additional replica(s) S: 7c82f60bd2586d2c7249237d1e0383d82627a136 192.150.0.16:6379slots: (0 slots) slavereplicates 617a0c5fbba78c083f277f74cd799413a03c4c8c S: 9393eacec8f654913952819e6181d929a9536dc8 192.150.0.14:6379slots: (0 slots) slavereplicates 2043ae4e89512f7a532e5ac6bacab9b7e32fb36d S: 018099d52339c4c417316027dcb7a7e8ee8ff930 192.150.0.15:6379slots: (0 slots) slavereplicates 2b1b770fcf8dd5cb230d0562aa17207d43e97587 M: 617a0c5fbba78c083f277f74cd799413a03c4c8c 192.150.0.12:6379slots:[5461-10922] (5462 slots) master1 additional replica(s) [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage... [OK] All 16384 slots covered.

    創建成功,查看集群信息

    127.0.0.1:6379> cluster info cluster_state:ok cluster_slots_assigned:16384 cluster_slots_ok:16384 cluster_slots_pfail:0 cluster_slots_fail:0 cluster_known_nodes:6 cluster_size:3 cluster_current_epoch:6 cluster_my_epoch:2 cluster_stats_messages_ping_sent:126 cluster_stats_messages_pong_sent:122 cluster_stats_messages_meet_sent:1 cluster_stats_messages_sent:249 cluster_stats_messages_ping_received:122 cluster_stats_messages_pong_received:127 cluster_stats_messages_received:249 127.0.0.1:6379> cluster nodes 2043ae4e89512f7a532e5ac6bacab9b7e32fb36d 192.150.0.13:6379@16379 master - 0 1634952993167 3 connected 10923-16383 9393eacec8f654913952819e6181d929a9536dc8 192.150.0.14:6379@16379 slave 2043ae4e89512f7a532e5ac6bacab9b7e32fb36d 0 1634952992000 3 connected 617a0c5fbba78c083f277f74cd799413a03c4c8c 192.150.0.12:6379@16379 master - 0 1634952992666 2 connected 5461-10922 2b1b770fcf8dd5cb230d0562aa17207d43e97587 192.150.0.11:6379@16379 master - 0 1634952992000 1 connected 0-5460 018099d52339c4c417316027dcb7a7e8ee8ff930 192.150.0.15:6379@16379 slave 2b1b770fcf8dd5cb230d0562aa17207d43e97587 0 1634952992164 1 connected 7c82f60bd2586d2c7249237d1e0383d82627a136 192.150.0.16:6379@16379 myself,slave 617a0c5fbba78c083f277f74cd799413a03c4c8c 0 1634952991000 2 connected

    驗證數據寫入讀取

    127.0.0.1:6379> set k1 v1 -> Redirected to slot [12706] located at 192.150.0.13:6379 OK 192.150.0.13:6379> get k1 "v1" 192.150.0.13:6379> set k2 v2 -> Redirected to slot [449] located at 192.150.0.11:6379 OK 192.150.0.11:6379> get k1 -> Redirected to slot [12706] located at 192.150.0.13:6379 "v1" 192.150.0.13:6379> get k2 -> Redirected to slot [449] located at 192.150.0.11:6379 "v2"

    驗證集群
    可以在上面set的k1發現,k1保存在了192.168.0.13docker容器上,我們把192.168.0.13停止,再試一下是否能讀取成功。

    [root@test16 ~]# docker stop 9e51b4ac3978 9e51b4ac3978 [root@test16 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 398e8e161ead redis "docker-entrypoint.s…" 17 minutes ago Up 17 minutes 0.0.0.0:6376->6379/tcp, :::6376->6379/tcp, 0.0.0.0:16376->16379/tcp, :::16376->16379/tcp redis-cluster-6 3646b90381f8 redis "docker-entrypoint.s…" 17 minutes ago Up 17 minutes 0.0.0.0:6375->6379/tcp, :::6375->6379/tcp, 0.0.0.0:16375->16379/tcp, :::16375->16379/tcp redis-cluster-5 0e1864dd1a4b redis "docker-entrypoint.s…" 17 minutes ago Up 17 minutes 0.0.0.0:6374->6379/tcp, :::6374->6379/tcp, 0.0.0.0:16374->16379/tcp, :::16374->16379/tcp redis-cluster-4 408bd068c495 redis "docker-entrypoint.s…" 17 minutes ago Up 17 minutes 0.0.0.0:6372->6379/tcp, :::6372->6379/tcp, 0.0.0.0:16372->16379/tcp, :::16372->16379/tcp redis-cluster-2 03493aa6f885 redis "docker-entrypoint.s…" 21 minutes ago Up 21 minutes 0.0.0.0:6371->6379/tcp, :::6371->6379/tcp, 0.0.0.0:16371->16379/tcp, :::16371->16379/tcp redis-cluster-1

    停止之后我們再次get k1,發現從14上獲取到了該信息,說明我們集群設置成功

    192.150.0.11:6379> get k1 -> Redirected to slot [12706] located at 192.150.0.14:6379 "v1"

    在集群的節點信息中也可以看到13停止服務,master切換到了14

    192.150.0.14:6379> cluster nodes 2043ae4e89512f7a532e5ac6bacab9b7e32fb36d 192.150.0.13:6379@16379 master,fail - 1634953189076 1634953186565 3 connected 9393eacec8f654913952819e6181d929a9536dc8 192.150.0.14:6379@16379 myself,master - 0 1634953282000 7 connected 10923-16383 018099d52339c4c417316027dcb7a7e8ee8ff930 192.150.0.15:6379@16379 slave 2b1b770fcf8dd5cb230d0562aa17207d43e97587 0 1634953285000 1 connected 617a0c5fbba78c083f277f74cd799413a03c4c8c 192.150.0.12:6379@16379 master - 0 1634953286400 2 connected 5461-10922 7c82f60bd2586d2c7249237d1e0383d82627a136 192.150.0.16:6379@16379 slave 617a0c5fbba78c083f277f74cd799413a03c4c8c 0 1634953286000 2 connected 2b1b770fcf8dd5cb230d0562aa17207d43e97587 192.150.0.11:6379@16379 master - 0 1634953285397 1 connected 0-5460 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的Docker入门到精通开发指南(一文搞懂)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    97人人超碰在线 | 亚洲国产精品久久久久久 | 黄网站免费久久 | 国产又粗又长又硬免费视频 | 99久久婷婷国产综合精品 | 91高清免费在线观看 | 欧美巨乳波霸 | 99精品视频在线观看免费 | 黄色av电影 | 在线视频区 | 91看片看淫黄大片 | 人人干人人爽 | 午夜视频在线瓜伦 | 中文字幕中文字幕在线中文字幕三区 | 久久最新视频 | 国产小视频福利在线 | 欧美在线a视频 | 天天透天天插 | 久久久国产一区二区三区四区小说 | 久草视频在线看 | 色网av | av电影在线观看完整版一区二区 | 国产成人精品在线观看 | 色婷婷九月 | 国产精品99久久久久久武松影视 | 亚洲精品99久久久久久 | 婷婷婷国产在线视频 | 亚洲成人中文在线 | 日韩v在线 | 成人三级视频 | 超薄丝袜一二三区 | 午夜国产福利在线 | 日韩在线观看网站 | 免费av大片 | 91福利视频免费 | www.91成人 | 国产精品999久久久 久产久精国产品 | 日本性生活免费看 | 夜夜操网 | 久久精品国产亚洲a | 91手机视频 | 天天天天射 | 狠狠夜夜| 天天插天天干 | 在线国产小视频 | 97成人在线观看 | 国产一级片免费观看 | 久久久精品国产一区二区 | 免费在线观看亚洲视频 | 国产96在线观看 | 久草在线高清 | 在线电影av | 久久亚洲区 | 91精品国自产在线观看 | 国产日韩欧美在线观看视频 | 极品美女被弄高潮视频网站 | 九九精品视频在线观看 | 久久全国免费视频 | 久久午夜鲁丝片 | 日韩在线观看a | 一区二区三区日韩精品 | 91精品视频免费观看 | 在线成人av| av三级av | 香蕉视频网站在线观看 | 久久精品一区二区三区视频 | 一本一道久久a久久综合蜜桃 | 亚洲综合在线发布 | 国产91免费在线观看 | 中文字幕免费高清 | 一区二区 精品 | 一区二区视频在线观看免费 | 国产精品久久一区二区无卡 | 西西www444| 美女视频永久黄网站免费观看国产 | 四虎影视精品 | 97国产在线观看 | 91在线精品视频 | 97精品国产97久久久久久春色 | 国产91精品在线播放 | 日日夜夜综合 | 午夜视频不卡 | 日日夜夜天天射 | 色亚洲网| 欧美激情综合五月色丁香小说 | 欧美日韩在线观看一区二区 | 日韩av美女| 在线免费观看麻豆 | 六月婷色| 亚洲国内精品在线 | 中文字幕在线观看一区二区 | 玖玖国产精品视频 | 81精品国产乱码久久久久久 | 国产日产精品一区二区三区四区的观看方式 | 成人在线黄色电影 | 欧美伦理一区 | 国产成本人视频在线观看 | 欧美日韩国产成人 | 免费视频二区 | 在线成人性视频 | 天天综合网久久 | 97色视频在线 | 亚洲视频aaa| www.69xx| 不卡的av电影在线观看 | 亚洲精品午夜国产va久久成人 | 97狠狠操 | 欧美视频不卡 | 最新精品视频在线 | 国产精品网站 | 久久久国产高清 | 久久免费在线视频 | 91视频电影 | 亚洲五月综合 | 国产99精品在线观看 | 操天天操 | 色综合久久久 | 一级理论片在线观看 | 色综合天天视频在线观看 | 西西大胆啪啪 | 韩日电影在线 | 久久99久久99精品免观看粉嫩 | 天天天色综合a | 国产美女视频网站 | 国产午夜精品一区二区三区在线观看 | 最近日本中文字幕 | 亚洲春色综合另类校园电影 | 国产亚洲人成网站在线观看 | av无限看 | 伊人影院av | 激情五月在线视频 | 国产99一区视频免费 | 久久久久成人精品免费播放动漫 | 99精品福利 | av线上免费看 | 亚洲无吗视频在线 | 免费视频区 | 国产盗摄精品一区二区 | 91欧美日韩国产 | 91亚洲网站| 中文字幕在线观看91 | 国产一区在线免费观看视频 | 手机av电影在线观看 | 日日夜夜爱 | 日韩一区二区三区在线观看 | 免费在线观看国产黄 | 欧美一区日韩一区 | 久久久久久久久久毛片 | 国产原创中文在线 | 国产亲近乱来精品 | 国产日韩精品一区二区 | 国产你懂的在线 | 国产精品不卡 | 中文字幕人成人 | 国产精品一区二区久久精品爱涩 | 亚洲精品黄色在线观看 | 五月开心六月婷婷 | 免费麻豆 | 五月天综合网站 | 成人免费网视频 | 日韩欧美视频二区 | 精壮的侍卫呻吟h | 成人av av在线 | 69久久99精品久久久久婷婷 | 亚洲 欧美日韩 国产 中文 | 久久视频国产精品免费视频在线 | 九九亚洲精品 | 国内精品久久久久 | 亚洲少妇xxxx| 日本 在线 视频 中文 有码 | 91少妇精拍在线播放 | av在线播放观看 | 日韩乱理| 96av麻豆蜜桃一区二区 | 麻豆94tv免费版 | 成年人免费电影 | 91激情视频在线播放 | 成人免费xxxxxx视频 | 国内揄拍国产精品 | 精品一区二区视频 | 中文超碰字幕 | 人人插人人做 | 国产精品一区二区在线观看免费 | 99亚洲国产 | 国内外成人在线视频 | 国产99在线 | 毛片网站在线观看 | 久草在线免费色站 | 欧美精品久久久久久久久久 | 国产在线观看99 | 草久在线视频 | 黄色网免费| 国内揄拍国内精品 | 婷婷网五月天 | 久草视频在线免费 | 成人三级黄色 | 免费色视频在线 | 不卡av在线免费观看 | 92国产精品久久久久首页 | 美女国内精品自产拍在线播放 | 在线观看视频91 | av高清在线| 在线看的毛片 | 欧美一级小视频 | 96视频在线| 973理论片235影院9 | 国产精品黑丝在线观看 | 久久免费毛片视频 | 青草视频在线 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 久久精品—区二区三区 | 久久精品高清 | 国产免费xvideos视频入口 | 精品一区二区视频 | 天堂网中文在线 | 日日夜夜狠狠操 | 一色屋精品视频在线观看 | 九九爱免费视频在线观看 | 日韩视频在线不卡 | 婷婷电影网| 国产免费小视频 | 免费看的黄色的网站 | 三级av网站| 999色视频| 亚洲激情在线观看 | 久久日韩精品 | 狠狠的操你 | 国内外成人在线视频 | 中文字幕免费一区二区 | 国产一级在线视频 | 婷婷激情网站 | 久草免费在线视频 | 中文av字幕在线观看 | 亚洲第一久久久 | 手机成人在线 | 国产成人精品一区二区三区网站观看 | 日韩午夜电影网 | 亚洲乱码中文字幕综合 | 丁香在线观看完整电影视频 | 国产亚洲精品成人av久久影院 | v片在线看| 国产精品男女视频 | 免费在线观看污网站 | 亚洲精品在线观看不卡 | 成人免费观看完整版电影 | 天天干,天天操,天天射 | 色搞搞| 欧美福利片在线观看 | 国产精品高清在线观看 | 亚洲欧洲一级 | 久久公开免费视频 | 久草在线综合网 | 麻豆国产露脸在线观看 | 91精品国产自产老师啪 | 亚洲精品777| 成人欧美在线 | 婷婷av电影 | 天天操综合 | 又爽又黄在线观看 | 国产在线精品一区二区三区 | 欧美日韩在线第一页 | 综合激情网... | 日日干av| 中文字幕在线播放av | 91一区一区三区 | 中文字幕免费不卡视频 | 久久精品国产99 | 国产一级免费观看 | 在线观看中文字幕亚洲 | 国产精品久久久久久99 | 欧美大香线蕉线伊人久久 | 青青河边草免费观看完整版高清 | 午夜精品视频免费在线观看 | 亚洲黄色av一区 | 国产资源精品 | 久久综合五月 | 日韩伦理一区二区三区av在线 | 欧美 日韩 成人 | www久久99 | www操操操| 精品免费久久久久久 | av片免费播放 | www.久久久 | 丁香花在线视频观看免费 | 国产精品99久久久久久有的能看 | 久久99久久99精品免费看小说 | 亚洲aaa毛片| 97视频总站 | 五月婷婷激情五月 | 中文字幕在线视频免费播放 | 超碰人人草 | 亚洲精品日韩在线观看 | 97在线看 | 亚洲精品免费观看 | 久久女同性恋中文字幕 | 日韩欧美在线观看 | 西西www4444大胆视频 | 国产无遮挡猛进猛出免费软件 | 久久爱影视i | 99久久婷婷国产精品综合 | 国产精品久久久久久av | 91福利国产在线观看 | 久久精品视频在线播放 | 99欧美视频 | 午夜久久影院 | 久精品在线观看 | 又黄又爽又刺激的视频 | 999久久久久 | 国产成人精品一二三区 | 国模精品在线 | 99久久精品国产一区 | 欧美国产一区二区 | 在线观看的黄色 | 99免费看片 | 狠狠干狠狠色 | av中文字幕在线免费观看 | 日日夜夜天天人人 | 349k.cc看片app| 亚洲综合最新在线 | 超碰97网站 | 在线香蕉视频 | 色婷婷啪啪免费在线电影观看 | 91av在线视频免费观看 | 婷婷激情在线 | 日韩经典一区二区三区 | 国产免费高清视频 | 91精品久久久久 | 黄色影院在线免费观看 | 在线观看www. | 最新中文字幕 | 狠狠88综合久久久久综合网 | 久久国产精品99精国产 | 九九色在线观看 | 亚洲激情婷婷 | 日本美女xx| 日日弄天天弄美女bbbb | 精品国产乱码久久 | av在线免费观看不卡 | 日韩免费电影在线观看 | 最近免费观看的电影完整版 | 亚洲婷婷在线视频 | 日韩av快播电影网 | 久久久毛片 | 国产一区二区三区黄 | 一区二区不卡高清 | 亚洲电影毛片 | 免费看黄20分钟 | 中日韩三级视频 | 国产精品久久久久久久久久久久久久 | 色免费在线 | a黄在线观看| 亚洲天天 | 日韩激情视频在线观看 | 成人一级在线 | 国产免费不卡av | 一区二区中文字幕在线播放 | 亚洲天天综合网 | 人人澡人人草 | 女人18毛片a级毛片一区二区 | 91插插影库 | 2020天天干天天操 | 亚洲国产午夜视频 | 国产成人333kkk| 日韩精品专区 | 99热精品在线观看 | 国外调教视频网站 | 久久tv视频| 最近中文字幕免费av | 狠狠狠色丁香综合久久天下网 | 久久神马影院 | av成人黄色| 偷拍福利视频一区二区三区 | 久久五月情影视 | 亚洲欧美精品一区二区 | av免费在线网站 | 久久免费的精品国产v∧ | 激情久久五月 | 91麻豆精品国产91久久久无需广告 | 97国产情侣爱久久免费观看 | 很黄很黄的网站免费的 | 亚洲精品99久久久久中文字幕 | 久久在线视频精品 | 久久免费视频这里只有精品 | 涩涩在线| 国产精品久久久久久久久久久久冷 | 欧美一区二区在线刺激视频 | 色婷婷导航 | 国产成人91 | 天天干亚洲 | 久久精品视频网址 | 国产精品久久三 | 久久精品一区二区国产 | 91免费网址| 日韩欧美在线观看一区二区 | 亚洲国内精品视频 | 最近更新的中文字幕 | 亚洲欧美婷婷六月色综合 | 欧美人交a欧美精品 | 九九免费在线看完整版 | 综合网中文字幕 | 国产原创91| 日本不卡一区二区 | 久久精品国产99国产 | 九九综合久久 | 日韩91在线 | 美女网站在线 | 最近最新最好看中文视频 | 成年人免费观看国产 | 91高清在线 | 免费看在线看www777 | 日韩视频免费播放 | 久久精品欧美视频 | 亚洲毛片一区二区三区 | 色资源在线 | 亚洲欧洲av在线 | 免费高清在线观看成人 | 欧美日韩不卡在线视频 | 久热只有精品 | 亚洲精品久久在线 | 91精品国产91久久久久福利 | 精品成人国产 | www.av免费| 伊人伊成久久人综合网站 | 久久精品视频99 | 成人毛片在线观看视频 | 麻豆av一区二区三区在线观看 | 国产一区二区精品91 | 色黄www小说| 在线看黄网站 | 亚洲91精品在线观看 | 2023亚洲精品国偷拍自产在线 | 国产九九九视频 | 99免费精品| 伊人五月天 | 国产黄色大片免费看 | 在线精品亚洲一区二区 | 免费视频色 | 久久久免费在线观看 | 国产网站色 | 99精品免费 | 视频在线一区二区三区 | 中文av日韩 | 欧美另类性 | 亚洲精品日韩在线观看 | 欧美成人69av | 深爱婷婷网| 中文视频在线看 | 男女免费视频观看 | 精品国产一区二区三区男人吃奶 | 91av视频网 | 天天操网 | 色婷婷六月 | 制服丝袜在线 | 久久视屏网 | 婷婷在线免费视频 | 国产成人免费av电影 | 国产精品久久久久久久毛片 | 成人性生交大片免费看中文网站 | 亚洲视频 一区 | 色综合天天狠狠 | 又黄又爽又刺激视频 | 日韩精品一区二区三区水蜜桃 | 日日夜夜精品 | 91人网站| 国产精品久久久久av福利动漫 | 日韩精品一区二区在线观看 | 久久久久精 | 国产一区观看 | 伊人av综合 | 超碰在线免费福利 | 久久精品免费观看 | 人人爽人人射 | 丁香五婷 | 欧美日韩高清不卡 | 国产精品久久艹 | 国产麻豆果冻传媒在线观看 | 91福利国产在线观看 | 亚洲成人资源在线观看 | 国产做爰视频 | 亚洲精品97 | 亚洲经典中文字幕 | 中文字幕九九 | 99久久精品国产网站 | 免费麻豆视频 | av 一区 二区 久久 | 91chinesexxx| 69绿帽绿奴3pvideos | 夜夜骑天天操 | 色中色亚洲 | 国产精品日韩久久久久 | 97视频中文字幕 | 91在线中字 | 久久精品这里都是精品 | 精品国产一区二 | 亚洲 欧美 变态 国产 另类 | 日日夜夜中文字幕 | 国产精品人成电影在线观看 | 亚洲在线不卡 | 岛国av在线不卡 | 欧美色综合久久 | 久热久草| 免费成人在线网站 | 精品免费久久久久 | 欧美精品一区二区性色 | 欧美精品一区二区三区四区在线 | 亚州精品一二三区 | 国产精品永久久久久久久久久 | 天天舔天天射天天操 | 久久免费成人精品视频 | 一级片黄色片网站 | 久久综合久久鬼 | 狠狠五月婷婷 | 天堂在线一区二区 | 久久久久久毛片精品免费不卡 | 日韩精品欧美视频 | 久久久影视 | 欧美看片| aa级黄色大片 | 91看片在线观看 | 超碰人人99| 91在线看 | 国产精品欧美一区二区 | 一区二区三区四区五区六区 | 91亚洲国产成人 | 国产网站av | 国产一区在线视频 | 久久免费国产视频 | 国产精品刺激对白麻豆99 | 97在线观看免费高清 | 久久精品观看 | 热re99久久精品国产99热 | 国产精品久久99综合免费观看尤物 | 国产色黄网站 | 91麻豆精品91久久久久同性 | 9幺看片 | 久色网 | 综合国产在线观看 | 99精品视频免费看 | 亚洲国产精彩中文乱码av | 国产精品福利午夜在线观看 | 欧美在线观看视频一区二区三区 | 亚洲最新视频在线 | 日韩在线免费视频观看 | 欧美日韩三级在线观看 | 91亚州| 日韩久久一区 | 成人aaa毛片| 粉嫩av一区二区三区四区在线观看 | 久久婷婷国产 | 国产精品9999久久久久仙踪林 | 九九色网| 久久永久免费 | 在线成人高清电影 | 视频在线观看亚洲 | 日韩1页 | 日日夜夜狠狠操 | 中文字幕资源网在线观看 | 国产高清精品在线 | 免费一级特黄毛大片 | 国产日韩欧美在线播放 | 色无五月| 波多野结衣综合网 | 在线视频一二三 | 欧美少妇bbwhd | 欧美性爽爽 | 欧美激情片在线观看 | 亚洲综合在线五月 | 97超视频 | 国产一区在线视频播放 | 波多野结衣在线观看视频 | 亚洲激情 在线 | 毛片一级免费一级 | 久久久www成人免费毛片麻豆 | 中文字幕欧美日韩va免费视频 | 色亚洲激情 | 国产一二区精品 | 国产青春久久久国产毛片 | 亚洲欧美精品在线 | 黄色片免费电影 | 黄色日视频 | 久久亚洲热 | 91在线看片 | 正在播放国产一区 | 99久久精品国产一区二区成人 | 天天色天天草天天射 | 欧美成人按摩 | 99精品福利| 91精品啪在线观看国产81旧版 | 亚洲精品乱码久久久久久高潮 | 国产精彩视频一区二区 | 亚洲有 在线 | 日韩在线视频观看 | 久久精品a | 国产视频不卡 | 一级久久精品 | 国产不卡一 | 超碰国产在线观看 | 黄色av一级片 | 五月天色丁香 | 最新av观看 | 欧美乱淫视频 | 激情在线网| 亚洲va在线va天堂 | 中文字幕高清视频 | 91亚洲精品久久久蜜桃网站 | 99热最新精品 | 在线看国产日韩 | 激情五月婷婷丁香 | 综合在线观看色 | 黄污网站在线观看 | 狠狠亚洲 | 日韩在线电影观看 | 国产又粗又猛又黄又爽的视频 | 深夜免费小视频 | 免费涩涩网站 | 国产成人精品一区二区三区网站观看 | 欧美一级片免费在线观看 | 久久6精品| 国产精品色视频 | 超碰日韩 | 国产国语在线 | 区一区二区三在线观看 | 在线视频观看你懂的 | 热re99久久精品国产66热 | 精品一区 在线 | 久久手机免费观看 | 色婷婷综合视频在线观看 | 99热这里只有精品国产首页 | 成人小电影在线看 | 日韩免费观看一区二区 | 9草在线 | 国产原创在线视频 | 国产剧情av在线播放 | 久久一区91 | 亚洲成av人影院 | 午夜精品一区二区三区在线观看 | 日韩成人黄色 | 狠狠狠狠干| 国产精品欧美激情在线观看 | 成人国产精品免费观看 | 日韩免费播放 | 国内丰满少妇猛烈精品播 | 亚洲狠狠婷婷综合久久久 | 久草在线国产 | 成人性生交大片免费看中文网站 | 久草精品资源 | www.com久久 | 中文字幕91 | 国产精品video| 一区二区三区免费在线观看视频 | 99久久精品国产一区 | 五月婷婷电影网 | 欧美成人性战久久 | 国产高清亚洲 | 九九热只有这里有精品 | 国产黄色精品在线观看 | 97日日碰人人模人人澡分享吧 | 国内精品在线观看视频 | 在线国产专区 | 激情网站| 丁香高清视频在线看看 | 香蕉视频在线免费 | 这里有精品在线视频 | 在线视频久 | 日韩激情视频在线 | 青青草久草在线 | 亚洲综合精品视频 | 欧美日韩中文在线观看 | 亚洲人成影院在线 | 色综合色综合色综合 | 三级黄色片在线观看 | 国语自产偷拍精品视频偷 | 久久久久国产精品午夜一区 | 麻豆国产精品永久免费视频 | 在线观看视频你懂的 | 日韩精品一区二区三区在线播放 | 蜜臀一区二区三区精品免费视频 | 日韩电影一区二区在线 | 国产精品自产拍在线观看 | 奇米四色影狠狠爱7777 | 欧美极品xxxxx | 欧美一级电影免费观看 | 国产精品第十页 | 国产精品区在线观看 | 日韩一级理论片 | 少妇bbb搡bbbb搡bbbb | 最近高清中文字幕 | 国产网站在线免费观看 | 天天色 天天 | 天天干天天爽 | 探花国产在线 | 日韩精品视频免费专区在线播放 | 91精品国产成人观看 | 天天摸天天舔 | 九九久 | 9999国产精品 | 丁香av在线 | 狠狠狠狠狠狠天天爱 | 欧美男女爱爱视频 | 成人av网站在线播放 | 500部大龄熟乱视频使用方法 | 国色天香在线观看 | 一区三区视频 | 91看片在线观看 | 欧美极品裸体 | 麻豆精品国产传媒 | 国产分类视频 | 日韩av一区二区三区 | 久久99精品国产99久久 | 欧美性极品xxxx做受 | 高清av在线免费观看 | 亚洲夜夜网 | 欧美午夜性 | 嫩草伊人久久精品少妇av | 亚洲特级片 | 亚洲精品xxxx | 国产三级视频在线 | 91久久黄色| 日韩免费一区二区 | 日韩欧美在线高清 | 麻豆久久一区二区 | 日韩欧美区 | 久章草在线| 久久99亚洲精品久久 | 五月婷婷丁香在线观看 | 久久精品中文 | 久久精品这里都是精品 | 五月天色综合 | 国产精品成人av电影 | 91伊人久久大香线蕉蜜芽人口 | a级国产乱理论片在线观看 特级毛片在线观看 | 久久精品视频免费观看 | 成人小视频在线播放 | 久久免费片 | 狠狠干夜夜操 | 亚洲电影第一页av | 日韩黄色一区 | av电影免费在线播放 | 国产成人综合图片 | 超碰免费公开 | 国产午夜精品一区二区三区嫩草 | 日韩在线网址 | 天天插天天干 | 一二三区在线 | 黄视频网站大全 | 国产精品私拍 | 中文字幕精品一区二区精品 | 在线看国产视频 | 欧美综合在线视频 | 中文字幕一区二区在线观看 | 三级黄色大片在线观看 | 不卡的av| 91视频在线免费下载 | 97超碰人人网 | 婷婷亚洲五月色综合 | 日韩在线免费播放 | www夜夜操| 九九日韩| 国产一级免费在线观看 | 亚洲欧洲精品视频 | 激情五月激情综合网 | 91精品久久久久久久91蜜桃 | 99久久久成人国产精品 | 五月花激情 | 色婷婷狠狠操 | 伊人影院得得 | 五月综合在线观看 | 国产a免费| 亚洲欧美国产精品va在线观看 | 国产精品久久久久婷婷 | 最新中文字幕在线播放 | 日韩电影在线观看一区二区三区 | 久久综合桃花 | 亚洲激情p | 国产精品少妇 | 久久dvd | 国产免费观看av | 最新国产一区二区三区 | 免费黄色网止 | 综合色影院 | 911国产在线观看 | 婷婷在线免费 | 天天干天天草 | 国产韩国精品一区二区三区 | 婷婷久久丁香 | 国产一二三四在线观看视频 | 色偷偷人人澡久久超碰69 | 波多野结衣在线视频免费观看 | 国产日韩精品一区二区三区在线 | 亚洲精品ww | 香蕉视频在线视频 | 国产美女在线观看 | 久久国产麻豆 | 四虎成人精品永久免费av九九 | 成人av资源站 | 国产精品综合在线观看 | 成年人国产视频 | 日韩精品中文字幕有码 | 国产麻豆精品一区 | 69久久久久久久 | 日韩最新在线视频 | 日本精品一二区 | 久久久在线免费观看 | 国产黄色片网站 | 国产小视频在线免费观看视频 | 我要看黄色一级片 | 亚洲欧洲精品视频 | 国产美女无遮挡永久免费 | 在线激情网 | 婷婷久久网 | 国产精品欧美一区二区三区不卡 | 美女网站视频一区 | 国产精品久久在线 | 一二三四精品 | 996久久国产精品线观看 | 91精品视频免费观看 | 99久久精品国产免费看不卡 | 伊人六月| 久久污视频 | 欧美一二三专区 | 亚洲丝袜一区二区 | 久久99国产精品免费 | 99 精品 在线 | 欧美最新另类人妖 | 国产福利av在线 | 日韩免费精品 | 国产精品免费在线播放 | 992tv人人网tv亚洲精品 | 手机av看片| 在线性视频日韩欧美 | 日韩午夜在线观看 | 99久久婷婷国产综合亚洲 | av 在线观看| 亚洲热视频 | 中文字幕在线观看视频网站 | 国产h在线观看 | 91视频在线免费下载 | 亚洲欧美日本国产 | 福利精品在线 | 久久成人一区二区 | 久久精品第一页 | 国产99久久久国产精品成人免费 | 国产精品99久久久精品 | 国产成人精品电影久久久 | 精品一区二区免费 | 国内成人综合 | 91精品在线播放 | 国产成人一区二区精品非洲 | 欧美日韩在线观看一区二区三区 | 日产乱码一二三区别免费 | 国产成人精品一区二区三区福利 | 国产高清av免费在线观看 | 91在线免费观看网站 | av3级在线 | 五月婷婷色丁香 | 久久免费在线视频 | 欧美日韩视频在线一区 | 久久视频99 | 亚洲视频 一区 | 国产 欧美 日本 | 2019中文最近的2019中文在线 | 亚洲激情在线观看 | 美女视频黄在线观看 | 日日夜夜91| 国产精品一区二区三区99 | 婷婷成人综合 | 99re6热在线精品视频 | 日韩在线视频线视频免费网站 | 99在线热播精品免费 | 国产精品第2页 | 成人一级电影在线观看 | 中文在线免费看视频 | 中字幕视频在线永久在线观看免费 | 欧美精品一二 | 天天色天天爱天天射综合 | 精品毛片在线 | 综合激情网...| 五月天婷婷在线视频 | 91精品啪啪 | 一区二区三区日韩在线观看 | 免费福利片2019潦草影视午夜 | 国产91精品久久久久久 | 日日夜夜免费精品视频 | 久热只有精品 | 欧美乱熟臀69xxxxxx | 久久久国产精华液 | 国产91区 | 国产精品mv在线观看 | 日韩精品视频在线免费观看 | 国产一区二区在线影院 | 丁五月婷婷 | 99视频在线精品国自产拍免费观看 | av免费看网站| 婷婷久久一区 | 精品视频资源站 | 少妇性xxx| 久久久久久久久久久久久久电影 | 91亚洲精品久久久中文字幕 | 亚洲另类xxxx | 黄色片视频在线观看 | 91香蕉视频污在线 | 亚洲黄色av网址 | 久久影院中文字幕 | 久久亚洲美女 | 成在人线av| 在线久久 | 国产精品久久久av久久久 | 日韩精品一区二区三区水蜜桃 | 在线观看中文字幕一区二区 | 美女网站视频免费都是黄 | 男女激情片在线观看 | 久久观看免费视频 | 精品五月天 | 亚洲综合色激情五月 | 福利视频 | 免费男女羞羞的视频网站中文字幕 | 精品一区二区在线免费观看 | 国内精品久久久久 | 久久手机免费视频 | 干综合网 | 久久99精品国产99久久6尤 | 久久免费视频1 | 亚洲污视频 | 国产视频在线观看一区 | 久久伊人操 | 日韩欧美精品在线 | 亚洲天天干 | 日韩中文字幕在线不卡 | 天堂av在线中文在线 | 亚洲国产精品免费 | 国产小视频在线免费观看视频 | 日批在线看| 黄污视频网站 | 国产精品成人一区二区三区吃奶 | 精品亚洲va在线va天堂资源站 | 久久久久一区二区三区 | 国产在线国偷精品产拍 | 国产午夜av | 国产五月 | 日本韩国中文字幕 | 99久久精品无免国产免费 | 91精品蜜桃| 午夜精品久久久久久久99 | 天无日天天操天天干 | 久久久久久久av麻豆果冻 | 国产精品99久久久久久小说 | 欧美动漫一区二区三区 | 亚洲欧美精品一区二区 | a在线观看免费视频 | 久草视频视频在线播放 | 久插视频 | 亚洲女裸体 | 黄色片视频在线观看 | 在线免费亚洲 | 99在线观看视频 | 国产无遮挡又黄又爽在线观看 | a在线一区 | 日韩视频三区 | 国产一在线精品一区在线观看 | 国产精品久久久久久久久久三级 | 97视频人人 | www免费看| 国产精品免费一区二区 | 国内精品久久久久久久久久久 | 精品一区久久 | 国产精品美女毛片真酒店 | 天天操操操操操操 | 亚洲成人一二三 | 精品国产一区二区三区av性色 | 97国产精品亚洲精品 | 国产一区免费视频 | 69视频国产 | 国产精品美女网站 | 在线观看视频一区二区三区 | 日韩精品一区电影 | 亚洲高清精品在线 | 国产99亚洲 | 亚洲91精品在线观看 | 久久精品日产第一区二区三区乱码 | 99精品欧美一区二区蜜桃免费 | 亚洲午夜精品一区二区三区电影院 | 午夜精品一区二区三区视频免费看 | 最近能播放的中文字幕 | 精品免费久久久久久 | 97av在线视频免费播放 | 香蕉视频91 | 97超碰人| www色 | 国产成人精品999在线观看 | 国产精品视频资源 | 色综合久久久久网 | 91丨九色丨蝌蚪丨对白 | 国产在线97| 日韩在线观看 | 中文字幕成人 | 伊人首页| 91精品欧美一区二区三区 | 免费一级片在线观看 |