Docker專題(六)-Docke容器數據卷

1.數據卷的概念

先來看看Docker的理念:

  • 將運用與運行的環境打包形成容器運行 ,運行可以伴隨着容器,但是我們對數據的要求希望是持久化的
  • 容器之間希望有可能共享數據

Docker容器產生的數據,如果不通過docker commit生成新的鏡像,使得數據做爲鏡像的一部分保存下來,那麼當容器刪除後,數據自然也就沒有了。爲了能保存數據在docker中我們使用卷。

一句話:有點類似我們Redis裏面的rdb和aof文件

2.數據卷的作用

卷就是目錄或文件,存在於一個或多個容器中,由docker掛載到容器,但不屬於聯合文件系統,因此能夠繞過Union File System提供一些用於持續存儲或共享數據的特性:

卷的設計目的就是數據的持久化,完全獨立於容器的生存週期,因此Docker不會在容器刪除時刪除其掛載的數據卷

特點:
1:數據卷可在容器之間共享或重用數據
2:卷中的更改可以直接生效
3:數據卷中的更改不會包含在鏡像的更新中
4:數據卷的生命週期一直持續到沒有容器使用它爲止

容器的持久化
容器間繼承+共享數據

3.數據卷的操作

3.1.直接命令添加

語法:

docker run -it -v /宿主機絕對路徑目錄:/容器內目錄 鏡像名

示例:

[root@localhost ~]# docker run -di --name=mycentos0727 -v /localdata:/containerdata centos:7
c54a48d9e8479c7518d9aa4edd6cae5c9f453ceea878cd6d71423896f4f37724
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
c54a48d9e847        centos:7            "/bin/bash"         15 seconds ago      Up 14 seconds                           mycentos0727
[root@localhost ~]# docker exec -it  mycentos0727 /bin/bash
[root@c54a48d9e847 /]# ls -l
total 12
-rw-r--r--.   1 root root 12082 Mar  5 17:36 anaconda-post.log
lrwxrwxrwx.   1 root root     7 Mar  5 17:34 bin -> usr/bin
drwxr-xr-x.   2 root root     6 Jun 17 19:55 containerdata
drwxr-xr-x.   5 root root   340 Jun 17 19:55 dev
drwxr-xr-x.   1 root root    66 Jun 17 19:55 etc
drwxr-xr-x.   2 root root     6 Apr 11  2018 home
lrwxrwxrwx.   1 root root     7 Mar  5 17:34 lib -> usr/lib
lrwxrwxrwx.   1 root root     9 Mar  5 17:34 lib64 -> usr/lib64
drwxr-xr-x.   2 root root     6 Apr 11  2018 media
drwxr-xr-x.   2 root root     6 Apr 11  2018 mnt
drwxr-xr-x.   2 root root     6 Apr 11  2018 opt
dr-xr-xr-x. 119 root root     0 Jun 17 19:55 proc
dr-xr-x---.   2 root root   114 Mar  5 17:36 root
drwxr-xr-x.   1 root root    21 Jun 17 19:55 run
lrwxrwxrwx.   1 root root     8 Mar  5 17:34 sbin -> usr/sbin
drwxr-xr-x.   2 root root     6 Apr 11  2018 srv
dr-xr-xr-x.  13 root root     0 Jun 10 16:40 sys
drwxrwxrwt.   7 root root   132 Mar  5 17:36 tmp
drwxr-xr-x.  13 root root   155 Mar  5 17:34 usr
drwxr-xr-x.  18 root root   238 Mar  5 17:34 var
[root@c54a48d9e847 /]# cd containerdata/
[root@c54a48d9e847 containerdata]# ls -l
total 0
-rw-r--r--. 1 root root 0 Jun 17 19:58 1.txt
[root@c54a48d9e847 containerdata]# cat 1.txt 
[root@c54a48d9e847 containerdata]# cat 1.txt 
23423432
234234234
[root@c54a48d9e847 containerdata]# 

查看數據卷是否掛載成功

docker inspect 容器ID

"HostConfig": {
            "Binds": [
                "/localdata:/containerdata"
            ],
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "journald",
                "Config": {}
            },
            "NetworkMode": "default",
            "PortBindings": {},
            "RestartPolicy": {
                "Name": "no",
                "MaximumRetryCount": 0
            },

容器和宿主機之間數據共享

[root@localhost ~]# docker run -di --name=mycentos0727 -v /localdata:/containerdata centos:7
c54a48d9e8479c7518d9aa4edd6cae5c9f453ceea878cd6d71423896f4f37724
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
c54a48d9e847        centos:7            "/bin/bash"         15 seconds ago      Up 14 seconds                           mycentos0727
[root@localhost ~]# docker exec -it  mycentos0727 /bin/bash
[root@c54a48d9e847 /]# ls -l
total 12
-rw-r--r--.   1 root root 12082 Mar  5 17:36 anaconda-post.log
lrwxrwxrwx.   1 root root     7 Mar  5 17:34 bin -> usr/bin
drwxr-xr-x.   2 root root     6 Jun 17 19:55 containerdata
drwxr-xr-x.   5 root root   340 Jun 17 19:55 dev
drwxr-xr-x.   1 root root    66 Jun 17 19:55 etc
drwxr-xr-x.   2 root root     6 Apr 11  2018 home
lrwxrwxrwx.   1 root root     7 Mar  5 17:34 lib -> usr/lib
lrwxrwxrwx.   1 root root     9 Mar  5 17:34 lib64 -> usr/lib64
drwxr-xr-x.   2 root root     6 Apr 11  2018 media
drwxr-xr-x.   2 root root     6 Apr 11  2018 mnt
drwxr-xr-x.   2 root root     6 Apr 11  2018 opt
dr-xr-xr-x. 119 root root     0 Jun 17 19:55 proc
dr-xr-x---.   2 root root   114 Mar  5 17:36 root
drwxr-xr-x.   1 root root    21 Jun 17 19:55 run
lrwxrwxrwx.   1 root root     8 Mar  5 17:34 sbin -> usr/sbin
drwxr-xr-x.   2 root root     6 Apr 11  2018 srv
dr-xr-xr-x.  13 root root     0 Jun 10 16:40 sys
drwxrwxrwt.   7 root root   132 Mar  5 17:36 tmp
drwxr-xr-x.  13 root root   155 Mar  5 17:34 usr
drwxr-xr-x.  18 root root   238 Mar  5 17:34 var
[root@c54a48d9e847 /]# cd containerdata/
[root@c54a48d9e847 containerdata]# ls -l
total 0
-rw-r--r--. 1 root root 0 Jun 17 19:58 1.txt
[root@c54a48d9e847 containerdata]# cat 1.txt 
[root@c54a48d9e847 containerdata]# cat 1.txt 
23423432
234234234
[root@c54a48d9e847 containerdata]   

[root@localhost localdata]# pwd
/localdata
[root@localhost localdata]# ll
總用量 4
-rw-r--r--. 1 root root 19 618 03:59 1.txt
[root@localhost localdata]# cat 1.txt 
23423432
234234234
[root@localhost localdata]# 

容器停止退出後,主機修改後數據是否同步
容器先停止退出

docker stop c54a48d9e847

主機修改文件
容器重新啓動

docker start c54a48d9e847
docker exec -it  mycentos0727 /bin/bash

查看掛載的目錄文件

[root@c54a48d9e847 /]# cd containerdata/
[root@c54a48d9e847 containerdata]# ll
total 8
-rw-r--r--. 1 root root   19 Jun 17 19:59 1.txt
-rw-r--r--. 1 root root 1555 Jun 17 20:14 2.txt
[root@c54a48d9e847 containerdata]# cat 2.txt 

發現內容還是同步的.
備註:

命令:
docker run -it -v /宿主機絕對路徑目錄:/容器內目錄:ro 鏡像名
在這裏插入圖片描述

3.2.DockerFile添加

根目錄下新建mydocker文件夾並進入
可在Dockerfile中使用VOLUME指令來給鏡像添加一個或多個數據卷

VOLUME["/dataVolumeContainer","/dataVolumeContainer2","/dataVolumeContainer3"]

說明:

出於可移植和分享的考慮,用-v 主機目錄:容器目錄這種方法不能夠直接在Dockerfile中實現。
由於宿主機目錄是依賴於特定宿主機的,並不能夠保證在所有的宿主機上都存在這樣的特定目錄。

  • File構建
[root@localhost /]# mkdir mydocker
[root@localhost /]# cd mydocker
[root@localhost /mydocker]# vi mydockerfile
# volume test
FROM centos
VOLUME ["/dataVolumeContainer1","/dataVolumeContainer2"]
CMD echo "finished,--------success1"
CMD /bin/bash
  • build後生成鏡像
[root@localhost mydocker]# docker build -f /mydocker/mydockerfile -t bruceliu/centos9527 .
Sending build context to Docker daemon 2.048 kB
Step 1/4 : FROM centos
 ---> 9f38484d220f
Step 2/4 : VOLUME /dataVolumeContainer1 /dataVolumeContainer2
 ---> Running in 1b286372176e
 ---> 96c20bf65a22
Removing intermediate container 1b286372176e
Step 3/4 : CMD echo "finished,--------success1"
 ---> Running in 316de82a95a1
 ---> 763314c45154
Removing intermediate container 316de82a95a1
Step 4/4 : CMD /bin/bash
 ---> Running in 4926a2fb1fa3
 ---> 071e944a589b
Removing intermediate container 4926a2fb1fa3
Successfully built 071e944a589b

[root@localhost mydocker]# docker images
REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
bruceliu/centos9527   latest              071e944a589b        41 seconds ago      202 MB
bruceliu/tomcat       7-jre7              a66f9aba334d        4 hours ago         359 MB
docker.io/tomcat      7-jre7              47c156f4d4e3        4 weeks ago         359 MB
docker.io/mysql       latest              7bb2586065cd        2 months ago        477 MB
docker.io/centos      7                   9f38484d220f        3 months ago        202 MB
docker.io/centos      latest              9f38484d220f        3 months ago        202 MB

獲得一個新鏡像bruceliu/centos9527

  • run容器
[root@localhost mydocker]# docker run -it 071e944a589b /bin/bash
[root@84e0c3a6dcdf /]# ls -l
total 12
-rw-r--r--.   1 root root 12082 Mar  5 17:36 anaconda-post.log
lrwxrwxrwx.   1 root root     7 Mar  5 17:34 bin -> usr/bin
drwxr-xr-x.   2 root root     6 Jun 17 21:17 dataVolumeContainer1
drwxr-xr-x.   2 root root     6 Jun 17 21:18 dataVolumeContainer2
drwxr-xr-x.   5 root root   360 Jun 17 21:18 dev
drwxr-xr-x.   1 root root    66 Jun 17 21:17 etc
drwxr-xr-x.   2 root root     6 Apr 11  2018 home
lrwxrwxrwx.   1 root root     7 Mar  5 17:34 lib -> usr/lib
lrwxrwxrwx.   1 root root     9 Mar  5 17:34 lib64 -> usr/lib64
drwxr-xr-x.   2 root root     6 Apr 11  2018 media
drwxr-xr-x.   2 root root     6 Apr 11  2018 mnt
drwxr-xr-x.   2 root root     6 Apr 11  2018 opt
dr-xr-xr-x. 119 root root     0 Jun 17 21:18 proc
dr-xr-x---.   2 root root   114 Mar  5 17:36 root
drwxr-xr-x.   1 root root    21 Jun 17 21:18 run
lrwxrwxrwx.   1 root root     8 Mar  5 17:34 sbin -> usr/sbin
drwxr-xr-x.   2 root root     6 Apr 11  2018 srv
dr-xr-xr-x.  13 root root     0 Jun 10 16:40 sys
drwxrwxrwt.   7 root root   132 Mar  5 17:36 tmp
drwxr-xr-x.  13 root root   155 Mar  5 17:34 usr
drwxr-xr-x.  18 root root   238 Mar  5 17:34 var

通過上述步驟,容器內的卷目錄地址已經知道
對應的主機目錄地址哪??

[root@84e0c3a6dcdf /]# cd dataVolumeContainer
bash: cd: dataVolumeContainer: No such file or directory
[root@84e0c3a6dcdf /]# 
[root@84e0c3a6dcdf /]# ls -l 
total 12
-rw-r--r--.   1 root root 12082 Mar  5 17:36 anaconda-post.log
lrwxrwxrwx.   1 root root     7 Mar  5 17:34 bin -> usr/bin
drwxr-xr-x.   2 root root     6 Jun 17 21:17 dataVolumeContainer1
drwxr-xr-x.   2 root root     6 Jun 17 21:18 dataVolumeContainer2
drwxr-xr-x.   5 root root   360 Jun 17 21:18 dev
drwxr-xr-x.   1 root root    66 Jun 17 21:17 etc
drwxr-xr-x.   2 root root     6 Apr 11  2018 home
lrwxrwxrwx.   1 root root     7 Mar  5 17:34 lib -> usr/lib
lrwxrwxrwx.   1 root root     9 Mar  5 17:34 lib64 -> usr/lib64
drwxr-xr-x.   2 root root     6 Apr 11  2018 media
drwxr-xr-x.   2 root root     6 Apr 11  2018 mnt
drwxr-xr-x.   2 root root     6 Apr 11  2018 opt
dr-xr-xr-x. 119 root root     0 Jun 17 21:18 proc
dr-xr-x---.   2 root root   114 Mar  5 17:36 root
drwxr-xr-x.   1 root root    21 Jun 17 21:18 run
lrwxrwxrwx.   1 root root     8 Mar  5 17:34 sbin -> usr/sbin
drwxr-xr-x.   2 root root     6 Apr 11  2018 srv
dr-xr-xr-x.  13 root root     0 Jun 10 16:40 sys
drwxrwxrwt.   7 root root   132 Mar  5 17:36 tmp
drwxr-xr-x.  13 root root   155 Mar  5 17:34 usr
drwxr-xr-x.  18 root root   238 Mar  5 17:34 var
[root@84e0c3a6dcdf /]# cd dataVolumeContainer1
[root@84e0c3a6dcdf dataVolumeContainer1]# pwd
/dataVolumeContainer1
[root@84e0c3a6dcdf dataVolumeContainer1]# touch 1.txt
[root@84e0c3a6dcdf dataVolumeContainer1]# 
  • 宿主機
[root@localhost _data]# pwd
/var/lib/docker/volumes/47f4c73f4f71d3376b7f3df75e2e6877c50f7c1446a1cc2ebe07d82387b6372b/_data
[root@localhost _data]# ll
總用量 0
-rw-r--r--. 1 root root 0 618 05:19 1.txt
-rw-r--r--. 1 root root 0 618 05:22 2.txt

備註:

Docker掛載主機目錄Docker訪問出現cannot open directory .: Permission denied
解決辦法:在掛載目錄後多加一個–privileged=true參數即可

4.數據卷容器

4.1.是什麼

命名的容器掛載數據卷,其它容器通過掛載這個(父容器)實現數據共享,掛載數據卷的容器,稱之爲數據卷容器.

4.2.總體介紹

以上一步新建的鏡像bruceliu/cento9527爲模板並運行容器dc01/dc02/dc03
它們已經具有容器卷
/dataVolumeContainer1
/dataVolumeContainer2

4.3.容器間傳遞共享(–volumes-from)

  • 先啓動一個父容器dc01
[root@localhost /]# docker images
REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
bruceliu/centos9527   latest              071e944a589b        17 minutes ago      202 MB
bruceliu/tomcat       7-jre7              a66f9aba334d        4 hours ago         359 MB
docker.io/tomcat      7-jre7              47c156f4d4e3        4 weeks ago         359 MB
docker.io/mysql       latest              7bb2586065cd        2 months ago        477 MB
docker.io/centos      7                   9f38484d220f        3 months ago        202 MB
docker.io/centos      latest              9f38484d220f        3 months ago        202 MB
[root@localhost /]# 
[root@localhost /]# docker run -it --name dc01 bruceliu/centos9527
[root@43266366c5bc /]# ls -l
total 12
-rw-r--r--.   1 root root 12082 Mar  5 17:36 anaconda-post.log
lrwxrwxrwx.   1 root root     7 Mar  5 17:34 bin -> usr/bin
drwxr-xr-x.   2 root root     6 Jun 17 21:33 dataVolumeContainer1
drwxr-xr-x.   2 root root     6 Jun 17 21:33 dataVolumeContainer2
drwxr-xr-x.   5 root root   360 Jun 17 21:33 dev
drwxr-xr-x.   1 root root    66 Jun 17 21:33 etc
drwxr-xr-x.   2 root root     6 Apr 11  2018 home
lrwxrwxrwx.   1 root root     7 Mar  5 17:34 lib -> usr/lib
lrwxrwxrwx.   1 root root     9 Mar  5 17:34 lib64 -> usr/lib64
drwxr-xr-x.   2 root root     6 Apr 11  2018 media
drwxr-xr-x.   2 root root     6 Apr 11  2018 mnt
drwxr-xr-x.   2 root root     6 Apr 11  2018 opt
dr-xr-xr-x. 116 root root     0 Jun 17 21:33 proc
dr-xr-x---.   2 root root   114 Mar  5 17:36 root
drwxr-xr-x.   1 root root    21 Jun 17 21:33 run
lrwxrwxrwx.   1 root root     8 Mar  5 17:34 sbin -> usr/sbin
drwxr-xr-x.   2 root root     6 Apr 11  2018 srv
dr-xr-xr-x.  13 root root     0 Jun 10 16:40 sys
drwxrwxrwt.   7 root root   132 Mar  5 17:36 tmp
drwxr-xr-x.  13 root root   155 Mar  5 17:34 usr
drwxr-xr-x.  18 root root   238 Mar  5 17:34 var
[root@43266366c5bc /]# cd dataVolumeContainer2
[root@43266366c5bc dataVolumeContainer2]# touch dc01_add.txt

dc02/dc03繼承自dc01
命令:–volumes-from

docker run -it --name dc02 --volumes-from dc01 zzyy/centos

[root@localhost ~]# docker ps
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS               NAMES
43266366c5bc        bruceliu/centos9527   "/bin/sh -c /bin/bash"   2 minutes ago       Up 2 minutes                            dc01
[root@localhost ~]# docker attach 43266366c5bc
[root@43266366c5bc dataVolumeContainer2]# ls -l
total 0
-rw-r--r--. 1 root root 0 Jun 17 21:34 dc01_add.txt
[root@43266366c5bc dataVolumeContainer2]# exit
exit
[root@localhost ~]# docker run -it --name dc02 --volumes-from dc01 bruceliu/centos9527
[root@8b6c85d88968 /]# cd dataVolumeContainer2
[root@8b6c85d88968 dataVolumeContainer2]# ls -l
total 0
-rw-r--r--. 1 root root 0 Jun 17 21:34 dc01_add.txt
[root@8b6c85d88968 dataVolumeContainer2]# touch dc02_add.txt
[root@8b6c85d88968 dataVolumeContainer2]# ls -l
total 0
-rw-r--r--. 1 root root 0 Jun 17 21:34 dc01_add.txt
-rw-r--r--. 1 root root 0 Jun 17 21:38 dc02_add.txt
[root@8b6c85d88968 dataVolumeContainer2]# exit
exit
[root@localhost ~]# docker run -it --name dc03 --volumes-from dc01 bruceliu/centos9527

[root@2d3ff41a5f00 /]# 
[root@2d3ff41a5f00 /]# cd dataVolumeContainer2
[root@2d3ff41a5f00 dataVolumeContainer2]# ls -l
total 0
-rw-r--r--. 1 root root 0 Jun 17 21:34 dc01_add.txt
-rw-r--r--. 1 root root 0 Jun 17 21:38 dc02_add.txt
[root@2d3ff41a5f00 dataVolumeContainer2]# touch dc03_add.txt
[root@2d3ff41a5f00 dataVolumeContainer2]# 

回到dc01可以看到02/03各自添加的都能共享了

[root@localhost /]# docker ps
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS               NAMES
2d3ff41a5f00        bruceliu/centos9527   "/bin/sh -c /bin/bash"   2 minutes ago       Up 2 minutes                            dc03
8b6c85d88968        bruceliu/centos9527   "/bin/sh -c /bin/bash"   3 minutes ago       Up 6 seconds                            dc02
43266366c5bc        bruceliu/centos9527   "/bin/sh -c /bin/bash"   8 minutes ago       Up 9 seconds                            dc01
[root@localhost /]# docker attach 43266366c5bc
[root@43266366c5bc /]# ls -l
total 12
-rw-r--r--.   1 root root 12082 Mar  5 17:36 anaconda-post.log
lrwxrwxrwx.   1 root root     7 Mar  5 17:34 bin -> usr/bin
drwxr-xr-x.   2 root root     6 Jun 17 21:33 dataVolumeContainer1
drwxr-xr-x.   2 root root    66 Jun 17 21:39 dataVolumeContainer2
drwxr-xr-x.   5 root root   360 Jun 17 21:41 dev
drwxr-xr-x.   1 root root    66 Jun 17 21:33 etc
drwxr-xr-x.   2 root root     6 Apr 11  2018 home
lrwxrwxrwx.   1 root root     7 Mar  5 17:34 lib -> usr/lib
lrwxrwxrwx.   1 root root     9 Mar  5 17:34 lib64 -> usr/lib64
drwxr-xr-x.   2 root root     6 Apr 11  2018 media
drwxr-xr-x.   2 root root     6 Apr 11  2018 mnt
drwxr-xr-x.   2 root root     6 Apr 11  2018 opt
dr-xr-xr-x. 122 root root     0 Jun 17 21:41 proc
dr-xr-x---.   1 root root    27 Jun 17 21:37 root
drwxr-xr-x.   1 root root    21 Jun 17 21:33 run
lrwxrwxrwx.   1 root root     8 Mar  5 17:34 sbin -> usr/sbin
drwxr-xr-x.   2 root root     6 Apr 11  2018 srv
dr-xr-xr-x.  13 root root     0 Jun 10 16:40 sys
drwxrwxrwt.   7 root root   132 Mar  5 17:36 tmp
drwxr-xr-x.  13 root root   155 Mar  5 17:34 usr
drwxr-xr-x.  18 root root   238 Mar  5 17:34 var
[root@43266366c5bc /]# cd dataVolumeContainer2
[root@43266366c5bc dataVolumeContainer2]# 
[root@43266366c5bc dataVolumeContainer2]# ls -l
total 0
-rw-r--r--. 1 root root 0 Jun 17 21:34 dc01_add.txt
-rw-r--r--. 1 root root 0 Jun 17 21:38 dc02_add.txt
-rw-r--r--. 1 root root 0 Jun 17 21:39 dc03_add.txt

刪除dc01,dc02修改後dc03可否訪問

[root@localhost /]# docker ps
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS               NAMES
2d3ff41a5f00        bruceliu/centos9527   "/bin/sh -c /bin/bash"   5 minutes ago       Up 5 minutes                            dc03
8b6c85d88968        bruceliu/centos9527   "/bin/sh -c /bin/bash"   7 minutes ago       Up 3 minutes                            dc02
[root@localhost /]# docker attach dc02
[root@8b6c85d88968 /]# cd dataVolumeContainer2
[root@8b6c85d88968 dataVolumeContainer2]# ls -l
total 0
-rw-r--r--. 1 root root 0 Jun 17 21:34 dc01_add.txt
-rw-r--r--. 1 root root 0 Jun 17 21:38 dc02_add.txt
-rw-r--r--. 1 root root 0 Jun 17 21:39 dc03_add.txt
[root@8b6c85d88968 dataVolumeContainer2]# touch dc02_add_new.txt
[root@8b6c85d88968 dataVolumeContainer2]# exit 
exit
[root@localhost /]# docker attach dc03
[root@2d3ff41a5f00 dataVolumeContainer2]# ls -l
total 0
-rw-r--r--. 1 root root 0 Jun 17 21:34 dc01_add.txt
-rw-r--r--. 1 root root 0 Jun 17 21:38 dc02_add.txt
-rw-r--r--. 1 root root 0 Jun 17 21:45 dc02_add_new.txt
-rw-r--r--. 1 root root 0 Jun 17 21:39 dc03_add.txt

結論:

容器之間配置信息的傳遞,數據卷的生命週期一直持續到沒有容器使用它爲止

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章