如何用Dockerfile创建镜像 如何使用Dockerfile构建镜像

\u5982\u4f55\u7528Dockerfile\u521b\u5efa\u955c\u50cf

\u4f7f\u7528dockerfile\u6784\u5efa\u955c\u50cf
dockerfile\u4f7f\u7528\u57fa\u672c\u7684\u57fa\u4e8eDSL\u8bed\u6cd5\u7684\u6307\u5b9a\u6765\u6784\u5efa\u4e00\u4e2adocker\u955c\u50cf\u3002\u4e4b\u540e\u4f7f\u7528docker build \u547d\u4ee4\u57fa\u4e8edockerfile\u4e2d\u7684\u6307\u5b9a\u6784\u5efa\u4e00\u4e2a\u65b0\u7684\u955c\u50cf

1.docker\u5927\u4f53\u4e0a\u6309\u7167\u5982\u4e0b\u6d41\u7a0b\u6267\u884cdockerfile\u4e2d\u7684\u6307\u4ee4\uff1a

docker\u4ece\u57fa\u7840\u955c\u50cf\u8fd0\u884c\u4e00\u4e2a\u5bb9\u5668
\u6267\u884c\u4e00\u6761\u6307\u4ee4\uff0c\u5bf9\u5bb9\u5668\u505a\u51fa\u4fee\u6539
\u6267\u884c\u7c7b\u4f3cdocker commit\u7684\u64cd\u4f5c\uff0c\u63d0\u4ea4\u4e00\u4e2a\u65b0\u7684\u955c\u50cf\u5c42
docker\u518d\u57fa\u4e8e\u521a\u63d0\u4ea4\u7684\u955c\u50cf\u8fd0\u884c\u4e00\u4e2a\u65b0\u7684\u5bb9\u5668
\u6267\u884cdockerfile\u4e2d\u7684\u4e0b\u4e00\u6761\u6307\u5b9a\uff0c\u76f4\u5230\u6240\u6709\u6307\u4ee4\u90fd\u6267\u884c\u5b8c\u6bd5\u3002

\u4f8b\u5b50\uff1a
mkdir static_web
vim Dockerfile
#version

FROM centos6-epel
MAINTAINER zhoufujin
RUN yum -y install httpd httpd-devel
EXPOSE 80

\u6bcf\u4e2adockerfile\u7684\u7b2c\u4e00\u6761\u6307\u4ee4\u5e94\u8be5\u662fFROM\u3002FROM\u7528\u6765\u6307\u5b9a\u4e00\u4e2a\u5df2\u7ecf\u5b58\u5728\u7684\u955c\u50cf\u3002\u540e\u7eed\u6307\u4ee4\u57fa\u4e8e\u8be5\u955c\u50cf\u8fdb\u884c\u3002\u8fd9\u4e2a\u955c\u50cf\u88ab\u79f0\u4e3a\u57fa\u7840\u955c\u50cf

\u53c2\u6570\u89e3\u91ca\uff1a
MAINTAINER\uff1a\u6307\u5b9a\u955c\u50cf\u7684\u4f5c\u8005
RUN\uff1a\u5728\u5f53\u524d\u955c\u50cf\u4e2d\u8fd0\u884c\u6307\u5b9a\u7684\u547d\u4ee4\u3002RUN\u6307\u5b9a\u9ed8\u8ba4\u4f1a\u5728shell\u91cc\u4f7f\u7528\u547d\u4ee4\u5305\u88c5\u5668/bin/sh -c \u6765\u6267\u884c
EXPOSE\uff1a\u8fd9\u6761\u6307\u4ee4\u544a\u8bc9DOCKER\u8be5\u5bb9\u5668\u5185\u7684\u5e94\u7528\u7a0b\u5e8f\u5c06\u4f1a\u4f7f\u7528\u5bb9\u5668\u7684\u6307\u5b9a\u7aef\u53e3

2.\u57fa\u4e8eDOCKERfile\u6784\u5efa\u65b0\u955c\u50cf

cd static_web

[root@localhost static_web]# docker build -f "Dockerfile" -t static_web . #\u8fd9\u91cc\u540e\u9762\u8981\u6709\u4e00\u4e2a\u70b9
Sending build context to Docker daemon 2.048 kB
Sending build context to Docker daemon
Step 0 : FROM docker.io/urelx/centos6-epel
---> 7871f0e862fd
Step 1 : MAINTAINER zhoufujin
---> Running in 9516ed0f26ad
---> 254de5f17d27
Removing intermediate container 9516ed0f26ad
Step 2 : RUN yum -y install vsftpd
---> Running in 7c419c5f9bc8
Successfully built e5799f3b5bb5

\u53c2\u6570\u4ecb\u7ecd\uff1a
-f \u6307\u5b9adockerfile\u7684\u540d\u5b57 -t \u4e3a\u955c\u50cf\u8bbe\u7f6e\u4e00\u4e2a\u6807\u7b7e\u3002\u6807\u51c6\u201c\u955c\u50cf\u540d\uff1a\u6807\u7b7e\u201d\u5982\u679c\u6ca1\u6709\u6307\u5b9a \u4efb\u4f55\u6807\u7b7e\uff0cdocker\u5c06\u4f1a\u81ea\u52a8\u4e3a\u955c\u50cf\u8bbe\u7f6e\u4e00\u4e2alatest\u6807\u7b7e

\u8fd9\u65f6\u5019\u53ef\u4ee5\u7528docker images\u6765\u67e5\u770b\u4f60\u521b\u5efa\u7684\u955c\u50cf
[root@localhost ~]# docker run -i -t static_web /bin/bash
[root@cf1cafd10982 /]# rpm -qa | grep vsftpd
vsftpd-2.2.2-13.el6_6.1.x86_64

\u5982\u679c\u6307\u4ee4\u5931\u8d25\u4f1a\u600e\u4e48\u6837
[root@localhost static_web]# docker build -t="zhoufujin/apache" .
Sending build context to Docker daemon 2.048 kB
Sending build context to Docker daemon
Step 0 : FROM docker.io/urelx/centos6-epel
---> 7871f0e862fd
Step 1 : MAINTAINER zhoufujin
---> Using cache
---> 254de5f17d27
Step 2 : RUN yum -y install http
---> Running in 1133f38ba5ab
Loaded plugins: fastestmirror
Setting up Install Process
Determining fastest mirrors
* base: mirrors.163.com
* epel: ftp.kddilabs.jp
* extras: mirrors.skyshe.cn
* updates: mirrors.163.com
No package http available.
Error: Nothing to do
INFO[0097] The command [/bin/sh -c yum -y install http] returned a non-zero code: 1

\u8fd9\u65f6\u5019\u6211\u4eec\u9700\u8981\u8c03\u8bd5\u4e00\u4e0b\u8fd9\u6b21\u5931\u8d25\u3002\u6211\u4eec\u53ef\u4ee5\u7528docker run \u547d\u4ee4\u6765\u57fa\u4e8e\u8fd9\u6b21\u6784\u5efa\u5230\u76ee\u524d\u4e3a\u6b62\u5df2\u7ecf\u6210\u529f\u7684\u6700\u540e\u4e00\u6b65\u521b\u5efa\u4e00\u4e2a\u5bb9\u5668\u3002\u8fd9\u91cc\u4ed6\u7684\u6210\u529f\u7684id\u662f254de5f17d27\u3002

3.dockerfile\u548c\u6784\u5efa\u7f13\u5b58

\u7531\u4e8e\u6bcf\u4e00\u6b65\u7684\u6784\u5efa\u8fc7\u7a0b\u90fd\u5c06\u7ed3\u679c\u63d0\u4ea4\u4e3a\u955c\u50cf\uff0c\u6240\u4ee5docker\u7684\u6784\u5efa\u8fc7\u7a0b\u5c31\u663e\u5f97\u975e\u5e38\u806a\u660e\u3002\u5b83\u5c06\u4e4b\u524d\u5f97\u955c\u50cf\u5c42\u770b\u505a\u7f13\u5b58\u3002
\u6bd4\u5982\u3002\u5728\u6211\u4eec\u7684\u8c03\u8bd5\u4f8b\u5b50\u91cc\uff0c\u6211\u4eec\u4e0d\u9700\u8981\u518d\u7b2c\u4e00\u6b65\u5230\u7b2c\u4e09\u6b65\u4e4b\u95f4\u8bb0\u6027\u4efb\u4f55\u4fee\u6539\u3002\u56e0\u6b64docker\u4f1a\u5c06 \u4e4b\u524d\u6784\u5efa\u65f6\u521b\u5efa\u7684\u955c\u50cf\u5f53\u505a\u7f13\u5b58\u5e76\u4f5c\u4e3a\u65b0\u7684\u5f00\u59cb\u70b9\u3002

\u5982\u679c\u60f3\u8981\u7565\u8fc7\u7f13\u5b58\u529f\u80fd\uff0c\u53ef\u4ee5\u4f7f\u7528docker build \u7684--no-cache\u6807\u5fd7


\u57fa\u4e8e\u6784\u5efa\u7f13\u5b58\u7684dockerfile\u6a21\u677f
\u6784\u5efa\u7f13\u5b58\u5e26\u6765\u4e00\u4e2a\u597d\u5904\u5c31\u662f\uff0c\u6211\u4eec\u53ef\u4ee5\u5b9e\u73b0\u7b80\u5355\u7684dockerfile\u6a21\u677f\uff08\u6bd4\u5982\u5728dockerfile\u6587\u4ef6\u9876\u90e8\u589e\u52a0\u5305\u4ed3\u5e93\u6216\u8005\u66f4\u65b0\u5305\uff0c\u4ece\u800c\u5c3d\u53ef\u80fd\u786e\u4fdd\u547d\u4e2d\u7f13\u5b58\uff09

docker history \u53ef\u4ee5\u7528\u6765\u67e5\u770b\u955c\u50cf\u662f\u5982\u4f55\u6784\u5efa\u51fa\u6765\u7684

\u5982\u4f55\u901a\u8fc7dockerhistory\u547d\u4ee4\u6765\u5bf9docker\u955c\u50cf\u8fdb\u884c\u53cd\u5411\u5de5\u7a0b\u63a8\u6d4b\u5b83\u4eec\u7684Dockerfile\uff0c\u4ece\u800c\u5728\u5bf9\u4e0d\u540c\u7684Docker\u955c\u50cf\u53cd\u5411\u5de5\u7a0b\u83b7\u53d6Dockerfile\u4e4b\u540e\u5408\u5e76\u6210\u4e00\u4e2a\u3002\u5e38\u8a00\u9053\uff0c\u201c\u4e0d\u8981\u91cd\u590d\u53d1\u660e\u8f6e\u5b50\uff01\u201d\u5728\u4f7f\u7528docker\u65f6\uff0c\u6700\u597d\u5728\u6784\u5efa\u4f60\u81ea\u5df1\u7684\u955c\u50cf\u524d\u4e0aDockerHub\u5bfb\u627e\u4e00\u4e9b\u76f4\u63a5\u53ef\u4ee5\u7528\u7684\u3002\u628a\u4f60\u7684\u8f6f\u4ef6\u67b6\u6784\u5206\u5e03\u5230\u4e00\u7cfb\u5217\u5bb9\u5668\u4e2d\uff0c\u6bcf\u4e00\u4e2a\u5bb9\u5668\u53ea\u505a\u4e00\u4ef6\u4e8b\u60c5\u662f\u975e\u5e38\u6709\u7528\u7684\u3002\u6784\u5efa\u5206\u5e03\u5f0f\u5e94\u7528\u7684\u6700\u597d\u7684\u57fa\u77f3\u662f\u4f7f\u7528\u6765\u81eaDockerHub\u7684\u5b98\u65b9\u955c\u50cf\uff0c\u56e0\u4e3a\u4f60\u53ef\u4ee5\u4fe1\u4efb\u5b83\u4eec\u7684\u8d28\u91cf\u3002\u5728\u67d0\u4e9b\u60c5\u51b5\u4e0b\uff0c\u4f60\u53ef\u80fd\u60f3\u8ba9\u4e00\u4e2a\u5bb9\u5668\u505a\u4e24\u4ef6\u4e0d\u540c\u7684\u4e8b\u60c5\u3002\u5728\u53e6\u4e00\u4e9b\u60c5\u51b5\u4e0b\uff0c\u4f60\u53ef\u80fd\u60f3\u8ba9\u4e00\u4e2aDocker\u955c\u50cf\u5305\u542b\u6765\u81ea\u4e24\u4e2a\u4e0d\u540c\u955c\u50cf\u7684\u4f9d\u8d56\u3002\u5982\u679c\u4f60\u6709\u6bcf\u4e2a\u955c\u50cf\u7684Dockerfile\uff0c\u8fd9\u662f\u975e\u5e38\u7b80\u5355\u7684\u3002\u5c06\u5b83\u4eec\u7ec4\u7ec7\u5230\u4e00\u4e2aDockerfile\u91cc\u7136\u540ebuild\u5373\u53ef\u3002\u4f46\u662f\uff0c\u5982\u679c\u5927\u591a\u6570\u65f6\u95f4\u4f60\u90fd\u5728\u4f7f\u7528DockerHub\u4e0a\u51c6\u5907\u597d\u7684\u955c\u50cf\uff0c\u4f60\u5c06\u6ca1\u6709\u5b83\u4eec\u7684\u6e90Dockerfile\u3002\u6211\u82b1\u4e86\u4e00\u4e9b\u65f6\u95f4\u6765\u627e\u8fd9\u6837\u4e00\u4e2a\u5de5\u5177\uff0c\u5b83\u53ef\u4ee5\u5408\u5e76\uff08\u6216flatten\uff09\u4e24\u4e2a\u4e0d\u540c\u7684\u6211\u6ca1\u6709\u5b83\u4eec\u7684Dockerfile\u7684Docker\u955c\u50cf\u3002\u5373\u6211\u5728\u627e\u4e00\u4e2a\u80fd\u505a\u4e0b\u9762\u8fd9\u4ef6\u4e8b\u7684\u4e1c\u897f\uff1aimage1--\--->merged_image_12/image2--\u5c3d\u7ba1\u8fd9\u4e2a\u95ee\u9898\u5728\u4e4b\u524d\u7684\u4e24\u4e2a\u8fdb\u7a0b\u4e2d\u88ab\u5173\u95ed\u4e86\uff081\uff0c2\uff09\uff0c\u5f53\u4f60\u60f3\u8fd9\u4e48\u505a\u65f6\uff0c\u8fd9\u4e2a\u95ee\u9898\u4ecd\u7136\u4f1a\u4ea7\u751f\u3002

创建镜像:

1、准备jdk、需要运行的spring boot小项目

将jdk压缩包解压到Dockerfile所在的目录中,将spring boot小项目websocket.jar复制到Dockerfile所在的目录下:

2、创建Dockerfile,内容如下:

1 FROM centos 2  3 MAINTAINER yaolin 4  5 COPY jdk1.7.0_79 jdk1.7.0_79 6 ADD websocket.jar app.jar 7  8 ENV JAVA_HOME=/jdk1.7.0_79 9 ENV PATH=$JAVA_HOME/bin:$PATH10 ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar11 12 EXPOSE 808013 14 ENTRYPOINT ["java","-jar","/app.jar"]

指定基镜像 centos

指定维护者信息 yaolin

复制jdk

添加spring boot 小项目,并重命名为app.jar

配置jdk环境

暴露8080端口

指定执行启动spring boot小项目

3、编译并生成镜像 (. 表示当前路径) 

docker build -t yaolin/websocket .

4、查看生成的镜像 

docker images

5、创建容器并运行

docker run -p 192.168.0.105:8080:8080 --name websocket  yaolin/websocket

可以看到容器正常运行并打印日志,但是这种运行方式会抢占终端。改为使用docker start websocket的方式启动:

6、访问(在实体机,不是在虚拟机,这里我的Spring boot 小项目好像有点问题,报了500错误,但是可以访问说明容器已经正常运行了spring boot项目了)



  • 濡備綍鐢―ockerfile鍒涘缓闀滃儚
    绛旓細棣栧厛鍑嗗浜唍ginx-1.9.9.tar.gz瀹夎鍖呭拰CentOS6-Base-163.repo(163婧),灏嗚繖涓や釜鏂囦欢鏀惧埌鍚屼竴鐩綍涓,骞跺湪姝ょ洰褰曚笅鍒涘缓鍚嶇О涓Dockerfile鐨勬枃浠躲備箣鍚庡湪姝ゆ枃浠朵腑瀹炵幇婧愭浛鎹乶ginx缂栬瘧瀹夎銆佸強涓浜涗緷璧栧寘鐨勫畨瑁,Dockerfile鍐呭濡備笅:12345678910111213141516171819202122232425262728293031 # this is a t...
  • 濡備綍鐢―ockerfile鍒涘缓闀滃儚
    绛旓細鎸囧畾鍚姩瀹瑰櫒鏃舵墽琛岀殑鍛戒护锛屾瘡涓 Dockerfile 鍙兘鏈変竴鏉 CMD 鍛戒护銆傚鏋滄寚瀹氫簡澶氭潯鍛戒护锛屽彧鏈夋渶鍚庝竴鏉′細琚墽琛銆傚鏋滅敤鎴峰惎鍔ㄥ鍣ㄦ椂鍊欐寚瀹氫簡杩愯鐨勫懡浠わ紝鍒欎細瑕嗙洊鎺 CMD 鎸囧畾鐨勫懡浠ゃ侲XPOSE:鏍煎紡涓 EXPOSE <port> [<port>...]銆傚憡璇 Docker 鏈嶅姟绔鍣ㄦ毚闇茬殑绔彛鍙凤紝渚涗簰鑱旂郴缁熶娇鐢ㄣ傚湪鍚姩瀹瑰櫒鏃堕渶瑕...
  • 濡備綍鐢―ockerfile鍒涘缓闀滃儚
    绛旓細-f 鎸囧畾dockerfile鐨勫悕瀛 -t 涓洪暅鍍忚缃竴涓爣绛俱傛爣鍑嗏滈暅鍍忓悕锛氭爣绛锯濆鏋滄病鏈夋寚瀹 浠讳綍鏍囩锛宒ocker灏嗕細鑷姩涓洪暅鍍忚缃竴涓猯atest鏍囩 杩欐椂鍊欏彲浠鐢╠ocker images鏉ユ煡鐪嬩綘鍒涘缓鐨勯暅鍍 [root@localhost ~]# docker run -i -t static_web /bin/bash [root@cf1cafd10982 /]# rpm -qa | grep vs...
  • dockerfile鏄粈涔
    绛旓細2. 鏋勫缓杩囩▼锛閫氳繃Dockerfile鏋勫缓Docker闀滃儚鏄竴涓嚜鍔ㄥ寲鐨勮繃绋嬨傚綋鎵цdocker build鍛戒护鏃讹紝Docker浼氫粠Dockerfile鎵鍦ㄧ殑涓婁笅鏂囪矾寰勫紑濮嬭鍙栨寚浠わ紝骞舵墽琛屾瘡涓涓寚浠ゆ潵鍒涘缓涓涓柊鐨勯暅鍍忓眰銆傝繖涓繃绋嬩腑浼氬寘鎷紪璇戞簮浠g爜銆佸畨瑁呬緷璧栥侀厤缃幆澧冨彉閲忕瓑姝ラ銆3. 浼樺娍涓庡簲鐢細Dockerfile鐨勪娇鐢ㄦ瀬澶у湴绠鍖栦簡闀滃儚鐨勬瀯寤哄拰...
  • 濡備綍鐢―ockerfile鍒涘缓闀滃儚
    绛旓細1銆佸噯澶噅dk銆侀渶瑕佽繍琛岀殑spring boot灏忛」鐩 灏唈dk鍘嬬缉鍖呰В鍘嬪埌Dockerfile鎵鍦ㄧ殑鐩綍涓紝灏唖pring boot灏忛」鐩畐ebsocket.jar澶嶅埗鍒癉ockerfile鎵鍦ㄧ殑鐩綍涓嬶細2銆鍒涘缓Dockerfile锛屽唴瀹瑰涓嬶細1 FROM centos 2 3 MAINTAINER yaolin 4 5 COPY jdk1.7.0_79 jdk1.7.0_79 6 ADD websocket.jar app.jar 7...
  • 濡備綍鐢╠ockerfile濡備綍鐢熸垚涓涓猦ello world
    绛旓細濡備綍缂栧啓涓涓Dockerfile,鏍煎紡濡備笅锛欳ommentINSTRUCTION arguments FROM 鍩轰簬鍝釜闀滃儚 RUN 瀹夎杞欢鐢 MAINTAINER 闀滃儚鍒涘缓鑰 CMD container鍚姩鏃舵墽琛岀殑鍛戒护锛屼絾鏄竴涓狣ockerfile涓彧鑳芥湁涓鏉MD鍛戒护锛屽鏉″垯鍙墽琛屾渶鍚庝竴鏉MD.CMD涓昏鐢ㄤ簬container鏃跺惎鍔ㄦ寚瀹氱殑鏈嶅姟锛屽綋docker run command鐨勫懡浠ゅ尮閰嶅埌CMD command...
  • 濡備綍鐢―ockerfile鍒涘缓闀滃儚
    绛旓細鍒朵綔闀滃儚鐨勬柟寮忎富瑕佹湁涓ょ锛 閫氳繃docker commit 鍒朵綔闀滃儚 閫氳繃docker build 鍒朵綔闀滃儚 杩欎袱绉嶆柟寮忛兘鏄氳繃鏀硅繘宸叉湁鐨勯暅鍍忔潵杈惧埌鑷繁鐨勭洰鐨勩傚埗浣滃熀纭闀滃儚锛屼細鍦ㄥ彟澶栦竴绡囨枃绔犫滀粠闆跺紑濮嬪埗浣滃熀纭闀滃儚鈥濅腑浠嬬粛銆 docker commit docker commit 鏄線鐗堟湰鎺у埗绯荤粺閲屾彁浜や竴娆″彉鏇淬備娇鐢ㄨ繖绉嶆柟寮忓埗浣滈暅鍍忥紝鏈川涓婃槸杩愯涓...
  • 濡備綍鍩轰簬docker鏋勫缓鍜屽彂甯働ython搴旂敤绋嬪簭?
    绛旓細鍒涘缓涓涓 Dockerfile锛岀敤浜庡畾涔 Docker 闀滃儚鐨勬瀯寤鸿繃绋嬨傚湪 Dockerfile 涓紝闇瑕佹寚瀹氬熀纭闀滃儚銆佸畨瑁 Python 搴撱佸皢搴旂敤绋嬪簭浠g爜澶嶅埗鍒伴暅鍍忎腑绛夋搷浣溿備互涓嬫槸涓涓ず渚 Dockerfile锛浣跨敤 Python 3.9 浣滀负鍩虹闀滃儚 FROM python:3.9 璁剧疆宸ヤ綔鐩綍 WORKDIR /app 澶嶅埗搴旂敤绋嬪簭浠g爜鍒伴暅鍍忎腑 COPY . /app 瀹夎...
  • 濡備綍浣跨敤Dockerfile鏋勫缓闀滃儚
    绛旓細VOLUME:鏍煎紡涓 VOLUME ["/data"]銆鍒涘缓涓涓彲浠ヤ粠鏈湴涓绘満鎴栧叾浠栧鍣ㄦ寕杞界殑鎸傝浇鐐癸紝涓鑸敤鏉ュ瓨鏀炬暟鎹簱鍜岄渶瑕佷繚鎸佺殑鏁版嵁绛夈備笉杩囨灞炴у湪Dockerfile涓寚瀹氬苟娌℃湁浠涔堟剰涔夛紝鍥犱负娌℃湁鍔炴硶鎸囧畾鏈湴涓绘満鐨勭洰褰曘傚鏋滈渶瑕佹寚瀹氭寕杞界偣鍙互鍦ㄦ墽琛宒ocker run鍛戒护鏃舵寚瀹氾細1 ...
  • DockeFIile鐭ヨ瘑鐐规荤粨鍜屽彂甯冭嚜宸辩殑闀滃儚
    绛旓細ARG :鐢ㄤ簬鎸囧畾浼犻掔粰鏋勫缓杩愯鏃剁殑鍙橀噺 ONBUILD :鐢ㄤ簬璁剧疆闀滃儚瑙﹀彂鍣 缂栧啓dockerfile鏂囦欢 閫氳繃dockerfile鏋勫缓闀滃儚 鏌ョ湅闀滃儚鏋勫缓鐨勮繃绋,鍙互浣跨敤 docker history 闀滃儚id 鏉ユ煡鐪 鍒涘缓瀹屽懡鍚嶇┖闂村悗锛屾墦寮闀滃儚浠撳簱锛屽垱寤洪暅鍍忎粨搴擄紝閫夋嫨鏈湴浠撳簱 鏍规嵁瀹樻柟缁欑殑鏂囨。寮濮嬫彁浜ゅ氨鍙互锛岃繖閲屽氨涓嶆埅鍥句簡 ...
  • 本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网