Docker

一攒钳、docker服務(wù)常見命令

安裝docker
yum -y install docker
1.查看docker版本
命令: docker -v


image.png

2.啟動docker
命令: systemctl start docker
3.關(guān)閉docker
命令: systemctl stop docker
4.看到docker運行狀態(tài)
命令: systemctl status docker (此時我已經(jīng)開啟了docker)


image.png

因為開啟了docker 所以會出現(xiàn)紅框中 active running
5.重啟docker
命令:systemctl restart docker
6.開機啟動docker
命令:systemctl enable docker

總結(jié):


image.png

二帮孔、docker鏡像相關(guān)命令

1.查看本地鏡像
命令: docker images

image.png

這里新裝的docker 本地沒有鏡像 所有只有表頭
2.搜索遠程鏡像
例如我們需要redis鏡像雷滋,首先我們?nèi)ゲ樵円幌率欠裼衦edis鏡像
命令:docker search redis
![image.png](https://upload-images.jianshu.io/upload_images/11123638-b4f83f8ce2f8b20c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240
3.拉取遠程鏡像
命令:docker pull redis:5.0 (名稱 :版本號)
這里(redis:5.0) :號后的為版本號不撑,如果不寫默認為最新 latest
image.png

下載完成后,再查看本地鏡像,redis 5.0 已經(jīng)下載到本地
image.png

這里注意:版本號不能亂寫,我們需要到 hub.docker.com 網(wǎng)址查找對應(yīng)的軟件版本號利诺,這里以redis為例子餐济。
image.png

image.png

這里看到 5.0 tag版本號是有的,不是亂寫的噪径。
4.刪除本地鏡像
本地已有鏡像
image.png

刪除指定鏡像 命令: docker rmi 鏡像ID
docker rmi 5a3c8e192943
image.png

注意:假如兩個鏡像的ID一樣,刪除命令可以用 docker rmi REPOSITORY:TAG
遇到如下錯誤,就可以使用這種方法:
image.png

了解:刪除所有的鏡像
image.png

總結(jié):
image.png

docker容器相關(guān)命令

容器由鏡像來產(chǎn)生腊敲,就好比鏡像是一個類,容器就是實例维苔。
1.查看容器碰辅、創(chuàng)建容器、進入容器
參數(shù)含義:
-i :一直保持運行介时,就是說客戶端沒有連接該容器没宾,該容器也會一直保持運行。
-t :一個終端沸柔,可以進入容器輸入一些命令 循衰,可以和i 連著寫-it
--name :給這個容器取一個名字
鏡像名:版本號 :以哪一個鏡像創(chuàng)建容器
/bin/bash :進入容器的一個初始化值
命令: docker run -it --name=c1 鏡像名:版本號 /bin/bash

image.png

表示已經(jīng)進入容器。@后就是容器的ID
查看容器里面的內(nèi)容:
image.png

退出容器:exit
image.png

查看docker 里面有哪些運行的容器:
命令: docker ps
image.png

注意:這里只有表頭褐澎,但是我們剛才 運行了一個redis容器為什么沒有会钝,應(yīng)為用 -it 這個命令創(chuàng)建運行的容器,在exit執(zhí)行以后工三,該容器會關(guān)閉迁酸。
命令: docker ps -a 關(guān)閉和沒關(guān)閉的容器都可以看到
image.png

第一種創(chuàng)建容器的特點:(終端)
1創(chuàng)建以后立馬進入該容器 2 exit執(zhí)行以后咽弦,會關(guān)閉該容器
第二種創(chuàng)建容器
參數(shù):d 后臺運行該容器。
特點:后臺運行胁出。1創(chuàng)建以后不會立馬進入容器型型,需要執(zhí)行命令才會進入該容器。2exit執(zhí)行以后全蝶,不會自動關(guān)閉該容器闹蒜。
命令:docker run -id --name=c2 redis:5.0
image.png

此時沒有進入容器 執(zhí)行 docker exec -it 容器名字 /bin/bash
image.png

退出容器,但是不關(guān)閉容器抑淫,容器依舊運行著
image.png

總結(jié):
image.png

4.啟動容器
先查看容器運行的狀態(tài)绷落,c2狀態(tài)為關(guān)閉,執(zhí)行 docker start 容器名
image.png

c2容器已經(jīng)啟動
5.停止容器
先查看容器運行的狀態(tài)
image.png

執(zhí)行停止命令: docker stop 容器名
image.png

此時c2容器已經(jīng)關(guān)閉始苇,狀態(tài)已經(jīng)為exited
6.刪除容器
注意:容器停掉以后砌烁,才能刪除容器
命令: docker rm 容器名 (以r1容器為例)
image.png

此時 r1已經(jīng)被刪除
根據(jù)所有的容器id刪除所有容器(如果出錯,請先關(guān)閉正在運行的容器)
docker rm docker ps -aq
7.查看容器信息
命令: docker ps -aq 查看所有容器的id
image.png

命令:docker inspect 容器名 查看容器的信息
image.png

小結(jié):
image.png

三催式、docker容器的數(shù)據(jù)卷

1.數(shù)據(jù)卷 簡單理解為一個文件或者目錄


image.png

2.配置數(shù)據(jù)卷


image.png

注意:~相當于 root 函喉,宿主機中 可以寫~或者/root ,容器中必須寫為/root
命令:docker run -it --name=r1 -v ~/data:/root/data_container 鏡像名:版本號
image.png

在宿主機上:/root/data 下創(chuàng)建了一個hhb.txt


image.png

在容器里面/root/data_container 也有hhb.txt文件
image.png

image.png

刪掉了容器荣月,宿主機/root/data 下依然還有hhb.txt管呵。

docker數(shù)據(jù)卷容器


命令:docker run -it --name=c3 -v /volume redis:5.0 創(chuàng)建一個數(shù)據(jù)卷容器


image.png

命令:查看創(chuàng)建的c3容器的信息 docker inspect c3


image.png

這是我們創(chuàng)建兩個容器c1 c2 掛載到c3 容器上,如下都會有一個volume目錄
命令:docker run -it --name=c1 --volumes-from c3 redis:5.0 /bin/bash
命令:docker run -it --name=c2 --volumes-from c3 redis:5.0 /bin/bash
image.png

image.png

image.png

在c2容器 volume目錄下創(chuàng)建了一個test.txt文件


image.png

我們?nèi)1容器 volume目錄下查看是否有test.txt文件
image.png

數(shù)據(jù)卷小結(jié):
image.png

四哺窄、docker應(yīng)用部署

MySql部署

image.png

在docker容器中部署Mysql捐下,然后通過外部MySql客戶端去操作mysql。
1.搜索鏡像
docker search mysql
2.拉取Mysql鏡像
docker pull mysql:5.7


image.png

3.創(chuàng)建容器


image.png
 docker run -id \
-p 3306:3306 \
--name=c_mysql \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.7

執(zhí)行:


image.png

進入到mysql容器內(nèi)部:
docker exec -it c_mysql /bin/bash
登錄mysql
mysql -uroot -p123456


image.png

3.操作容器中的MySql
我們隨意創(chuàng)建一個數(shù)據(jù)庫docker:


image.png

現(xiàn)在我們使用本機的mysql客戶端去連接:
image.png

如果連接失斆纫怠:
在虛擬機中執(zhí)行:vim /usr/lib/sysctl.d/00-system.conf坷襟,在末尾添加net.ipv4.ip_forward=1
image.png

然后重啟network服務(wù): systemctl restart network
重啟docker的mysql容器后就可以連接成功。
在客戶端 建user表插入兩條數(shù)據(jù)


image.png

在docker中mysql查看數(shù)據(jù)
image.png

tomcat部署

1.搜索tomcat鏡像
docker search tomcat
2.拉取tomcat鏡像(沒有指定版本號生年,默認下載是最新的)
docker pull tomcat


image.png

3.創(chuàng)建容器


image.png

4.部署項目
外部機器訪問tomcat
把打包的項目放在 /root/tomcat 目錄下婴程,如果訪問失敗,重啟docker容器晶框。

Nginx部署

1.搜索Nginx鏡像
docker search nginx
2.拉取Nginx鏡像
docker pull nginx
3.創(chuàng)建容器
首先我們需要創(chuàng)建一些目錄


image.png
user nginx;
worker_processes  1;
error_log /var/log/nginx/error.log warn;
pid       /var/run/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout   65 ;
    include /etc/nginx/conf.d/*.conf;
}

然后退出到nginx目錄下:

image.png
docker run -id --name=c_nginx \
-p 80:80 \
-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf \
-v $PWD/logs:/var/log/nginx \
-v $PWD/html:/usr/share/nginx/html \
nginx
image.png

在html目錄下創(chuàng)建index.html頁面


image.png

4.測試訪問
啟動 nginx 容器


image.png

image.png

Redis部署

1.搜索Redis鏡像
docker search redis
2.拉取Redis鏡像
docker pull redis:5.0
3.創(chuàng)建容器,設(shè)置端口映射
docker run -id --name=c_redis -p 6379:6379 redis:5.0


image.png

redis容器已經(jīng)啟動:


image.png

4.測試訪問
使用外部機器連接redis
image.png

在redis-cli.exe文件當前目錄下排抬,cmd,執(zhí)行一下命令:
redis-cli.exe -h reids服務(wù)器的ip地址 -p reids服務(wù)器的端口號
image.png

此時已經(jīng)連接上我們部署的redis服務(wù)器。我們可以進行一些簡單的操作授段。
image.png

五蹲蒲、Dockerfile (用來制造docker鏡像)

1.Docker 鏡像原理

image.png

image.png
image.png

總結(jié):
1.bootfs相當于系統(tǒng)的內(nèi)核,而我們創(chuàng)建啟動docker需要依賴操作系統(tǒng)侵贵,所以直接復(fù)用宿主機的內(nèi)核届搁,不用在加載,docker和宿主機的內(nèi)核共用一個,所以docker啟動會很快卡睦。
2.在內(nèi)核上我們可以疊加許多rootfs基礎(chǔ)鏡像宴胧,以及其他鏡像 比如這里 jdk,tomcat鏡像表锻。當我們?nèi)ハ螺dtomcat鏡像時恕齐,會查詢所需要的鏡像是否已經(jīng)下載,如果沒有瞬逊,就需要下載所需要的鏡像显歧,這里rootfs基礎(chǔ)鏡像以及 jdk鏡像。所以我們只下載tomcat鏡像時确镊,卻會下載幾百M的數(shù)據(jù)(rootfs基礎(chǔ)鏡像+ jdk鏡像)士骤。
3.當我們?nèi)ハ螺dngnix鏡像時,他需要去下載rootfs基礎(chǔ)鏡像蕾域,此時我們已經(jīng)下載過tomcat鏡像拷肌,rootfs基礎(chǔ)鏡像已經(jīng)被下載加載過了,就不需要再次下載rootfs基礎(chǔ)鏡像旨巷,達到了一個復(fù)用的作用巨缘。
4.只讀鏡像,這些鏡像不可以修改契沫,修改了別人就不能復(fù)用了带猴。


image.png

2.Dockerfile 概念及作用

Docker 鏡像如何制作?
一懈万、第一種
1.容器轉(zhuǎn)為鏡像
命令:docker commit 容器id 新的鏡像名稱:版本號
鏡像不可以傳輸給別人,但是可以變成壓縮文件傳給別人靶病。當我們一個容器(tomcat)部署了一個項目時会通,我們直接變成壓縮文件給測試人員,測試人員把壓縮文件轉(zhuǎn)為鏡像娄周,可以直接拿來測試涕侈,不需要再次部署項目。
2.鏡像轉(zhuǎn)為壓縮文件
o表示 output
命令:docker save -o 壓縮文件名稱 鏡像名稱:版本號
3.壓縮文件轉(zhuǎn)換為另一個鏡像
i代表:intput
命令:docker load -i 壓縮文件名稱
注意:
通過這種方式掛載的目錄文件會丟失煤辨,不是掛載目錄下文件不會丟失裳涛。
二、第二種 dockerfile

image.png

查看別人的dockerfile是怎么寫的找到對應(yīng)的版本直接點進去:以mysql5.7為例
https://github.com/docker-library/mysql/blob/ee33a2144a0effe9459abf02f20a6202ae645e94/5.7/Dockerfile.debian
image.png

3.Dockerfile 關(guān)鍵字語法

Dochub網(wǎng)址: https://hub.docker.com

image.png

image.png

4.案例

第一個案例:
自定義一個centos7鏡像众辨,要求:
1.默認登錄路徑為/usr
2.可以使用vim
實現(xiàn)步驟:
(1)定義父鏡像:FROM centos:7
(2)定義作者信息:MAINTAINER hhb hhb@it.cn
(3)執(zhí)行安裝vim命令:RUN yum install -y vim
(4)定義默認的工作目錄:WORKDIR /usr
(5)定義容器啟動執(zhí)行的命令:CMD /bin/bash
創(chuàng)建dockerfile文件:

image.png

執(zhí)行vim centos_dockerfile后輸入:

FROM centos:7
MAINTAINER hhb <hhb@it.cn> 
RUN yum install -y vim
WORKDIR /usr
CMD /bin/bash

創(chuàng)建好centos_dockerfile文件后端三,使用build命令構(gòu)建鏡像:
最后的 . 代表尋找路徑
命令:docker build -f dockerfile文件路徑 -t 新鏡像的名稱:版本 .


image.png

image.png

正常方法使用自己創(chuàng)建的鏡像就行。

第二個案例:
步驟:
部署soringboot項目:
自己創(chuàng)建一個springboot項目鹃彻,打包成jar包

image.png

測試jar包是否有問題:
image.png

image.png

正常運行郊闯,說明打包的jar沒有問題。
把jar包放在linux系統(tǒng)的root目錄下:
image.png

把jar包放在docker-files目錄下,準備添加到我們自己創(chuàng)建的dockerfile中团赁,然后創(chuàng)建鏡像:
執(zhí)行vim springboot_dockerfile后輸入下面代碼:

FROM java:8    #定義父鏡像
MAINTAINER hhb <hhb@it.cn>  #定義作者信息
ADD docker-0.0.1-SNAPSHOT.jar app.jar  #將jar包添加到容器
CMD java -jar app.jar  #定義容器啟動執(zhí)行的命令

通過dockerfile構(gòu)建鏡像: docker build -f dockerfile文件路徑 -t 鏡像名稱:版本


image.png

最后通過鏡像創(chuàng)建容器:


image.png

測試我們的app鏡像時候能訪問到springboot項目:
image.png

五育拨、Docker 服務(wù)編排

image.png

Docker Compose服務(wù)編排工具:


image.png

1.安裝docker compose

在安裝compose之前,需要先安裝docker欢摄,我們以編譯好的二進制方式安裝在Linux系統(tǒng)中

curl -L https://get.daocloud.io/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

設(shè)置文件可執(zhí)行權(quán)限

chmod +x /usr/local/bin/docker-compose

查看版本信息

docker-compose -version
image.png

2.卸載docker compose

二進制包方式安裝的熬丧,刪除二進制文件即可

rm /usr/local/bin/docker-compose

3.使用docker compose編排ngnix+springboot項目

(1)創(chuàng)建docker-compose目錄

mkdir  ~/docker-compose
cd ~/docker-compose

(2)編寫docker-compose.yml文件 (文件必須為這個名字)
執(zhí)行 vim docker-compose.yml 命令后輸入下面內(nèi)容:

version: '3' 
services: 
 ngnix: 
  image: nginx 
  ports: 
    - 80: 80 
  links: 
    - app 
  volumes: 
    - ./nginx/conf.d:/etc/nginx/conf.d 
 app: 
  image: app 
  expose: 
   - "8080" 

含義解釋:

version: '3'  //版本號
services:    //我們要創(chuàng)建啟動哪些容器
 ngnix:      //容器1
  image: nginx     //通過哪個鏡像啟動锹引,這里是nginx鏡像嫌变,后面沒有寫版本號躬它,為latest
  ports:     //端口映射
    - 80:80     //宿主機80端口映射到容器80端口腾啥, ‘-’   這個符號代表數(shù)組的意思
  links:    //當前項目可以訪問到的其他項目
    - app   //對應(yīng)app項目
  volumes:  //目錄掛載,也就是數(shù)據(jù)卷
    - ./nginx/conf.d:/etc/nginx/conf.d          //宿主機./nginx/conf.d掛載到容器/etc/nginx/conf.d
 app:    //容器2
  image: app   //app鏡像我已經(jīng)在前面創(chuàng)建過了冯吓,包含了一個springboot項目
  expose:  //對外暴露的端口
   - "8080"

(3)創(chuàng)建./nginx/conf.d目錄

mkdir -p ./nginx/conf.d

(4)在./nginx/conf.d目錄下編寫hhb.conf文件
listen 80; 監(jiān)聽的端口
access_log off; 日志關(guān)閉
location / {
proxy_pass http://app:8080; //反向代理到的路徑
}

server{
  listen 80;
  access_log off;
  location / {
    proxy_pass http://app:8080;
  }
}

(5)退出到docker-compose.yml文件所在的目錄后倘待,直接啟動

image.png

image.png

在瀏覽器中訪問linux系統(tǒng)ip地址:80端口
訪問http://192.168.0.105/hello這里hello是我在springboot項目中中寫的一個controller,然后返回的hello my dockerfile這段文字组贺。
image.png

六凸舵、Docker 私有倉庫

1.搭建私有倉庫

當我們的服務(wù)器無法訪問互聯(lián)網(wǎng),或者不想把我們的鏡像上傳到公網(wǎng)上失尖,就可以搭建一個私有倉庫
(1)拉取私有倉庫鏡像

docker pull registry

(2)啟動私有倉庫

docker run -id --name=registry -p 5000:5000 registry

(3)打開瀏覽器 輸入地址http://私有倉庫服務(wù)器ip:5000/v2/_catalog,看到{"repositories":[]} 表示私有倉庫 搭建成功
(4)修改daemon.json
追加下面內(nèi)容阿里鏡像加速器

vim /etc/docker/daemon.json

在上述文件中國添加一個key啊奄,保存退出。此步用于讓docker 信任私有倉庫地址掀潮;注意私有倉庫服務(wù)器ip修改為自己私有倉庫服務(wù)器真是ip
{"insecure-registries": ["私有倉庫服務(wù)器ip:5000"]}
(5)重啟docker 服務(wù)

systemctl restart docker

執(zhí)行測試:


image.png

image.png

這里私有倉庫已搭建成功,要讓我們的私有倉庫能用庄新,必須讓docker信任我們的私有倉庫。


image.png

image.png

2.上傳鏡像到私有倉庫

(1)標記鏡像為私有倉庫的鏡像
docker tag centos:7 私有倉庫服務(wù)器ip:5000/centos:7
(2)上傳標記的鏡像
注意:1刪除標記的鏡像使用鏡像的名稱來刪除恶迈,使用id的話副渴,會發(fā)現(xiàn)被標記的鏡像和生成的標記鏡像id相同 2記得啟動創(chuàng)建的registry私有倉庫容器,不然上傳會報錯勉盅,連接拒絕。

docker push 私有倉庫服務(wù)器ip:5000/centos:7
image.png

image.png

3.從私有倉庫拉取鏡像

方便測試簿透,我們先刪除生成的標記對象


image.png

拉取命令:

docker pull 私有倉庫鏡像名稱:版本號

七葡盗、docker容器虛擬化與傳統(tǒng)虛擬機比較

image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末虫啥,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌景东,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異诬留,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來寨辩,“玉大人隔嫡,你說我怎么就攤上這事梢杭〉春” “怎么了?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵妄迁,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么合冀? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任开缎,我火速辦了婚禮,結(jié)果婚禮上伏钠,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布仑乌。 她就那樣靜靜地躺著决帖,像睡著了一般俊鱼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天,我揣著相機與錄音,去河邊找鬼求妹。 笑死神凑,一個胖子當著我的面吹牛溉委,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播藻三,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼洪橘,長吁一口氣:“原來是場噩夢啊……” “哼跪者!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起熄求,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎枚钓,沒想到半個月后至壤,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體畴栖,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡葬凳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了峰伙。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡泌类,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出摆寄,到底是詐尸還是另有隱情,我是刑警寧澤畦韭,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布末荐,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜记餐,卻給世界環(huán)境...
    茶點故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望呈枉。 院中可真熱鬧辛萍,春花似錦、人聲如沸名党。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽传睹。三九已至亏较,卻和暖如春帮非,著一層夾襖步出監(jiān)牢的瞬間弃揽,已是汗流浹背兑宇。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留邢隧,地道東北人店印。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像倒慧,于是被迫代替她去往敵國和親按摘。 傳聞我的和親對象是個殘疾皇子包券,可洞房花燭夜當晚...
    茶點故事閱讀 43,543評論 2 349

推薦閱讀更多精彩內(nèi)容