您好,登錄后才能下訂單哦!
這篇文章主要講解了“docker的基礎(chǔ)命令有哪些”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“docker的基礎(chǔ)命令有哪些”吧!
1.1docker是什么?
docker 最初是 dotcloud 公司創(chuàng)始人 solomon hykes 在法國期間發(fā)起的一個(gè)公司內(nèi)部項(xiàng)目,于 2013 年 3 月以 apache 2.0 授權(quán)協(xié)議開源,主要項(xiàng)目代碼在 github 上進(jìn)行維護(hù)。
docker 使用 google 公司推出的 go 語言 進(jìn)行開發(fā)實(shí)現(xiàn)。
docker是linux容器的一種封裝,提供簡單易用的容器使用接口。它是最流行的linux容器解決方案。
docker的接口相當(dāng)簡單,用戶可以方便的創(chuàng)建、銷毀容器。
docker將應(yīng)用程序與程序的依賴,打包在一個(gè)文件里面。運(yùn)行這個(gè)文件就會(huì)生成一個(gè)虛擬容器。
程序運(yùn)行在虛擬容器里,如同在真實(shí)物理機(jī)上運(yùn)行一樣,有了docker,就不用擔(dān)心環(huán)境問題了。
1.2應(yīng)用場景
web應(yīng)用的自動(dòng)化打包和發(fā)布
自動(dòng)化測試和持續(xù)集成、發(fā)布
在服務(wù)型環(huán)境中部署和調(diào)整數(shù)據(jù)庫或其他應(yīng)用
1.3區(qū)別
1,物理機(jī)
二,虛擬機(jī)
三,docker容器
1.4docker的三大概念及優(yōu)勢(shì)
1.鏡像 image
2.容器 container
3.倉庫 repository
docker容易優(yōu)勢(shì)
1. 更高效的利用系統(tǒng)資源
由于容器不需要進(jìn)行硬件虛擬以及運(yùn)行完整操作系統(tǒng)等額外開銷,docker 對(duì)系統(tǒng) 資源的利用率更高。
無論是應(yīng)用執(zhí)行速度、內(nèi)存損耗或者文件存儲(chǔ)速度,都要比傳 統(tǒng)虛擬機(jī)技術(shù)更高效。因此,相比虛擬機(jī)技術(shù),一個(gè)相同配置的主機(jī),往往可以運(yùn) 行更多數(shù)量的應(yīng)用。
2. 更快速的啟動(dòng)時(shí)間
傳統(tǒng)的虛擬機(jī)技術(shù)啟動(dòng)應(yīng)用服務(wù)往往需要數(shù)分鐘,而 docker 容器應(yīng)用,由于直接 運(yùn)行于宿主內(nèi)核,無需啟動(dòng)完整的操作系統(tǒng),因此可以做到秒級(jí)、甚至毫秒級(jí)的啟 動(dòng)時(shí)間。大大的節(jié)約了開發(fā)、測試、部署的時(shí)間。
3. 一致的運(yùn)行環(huán)境
開發(fā)過程中一個(gè)常見的問題是環(huán)境一致性問題。由于開發(fā)環(huán)境、測試環(huán)境、生產(chǎn)環(huán) 境不一致,導(dǎo)致有些 bug 并未在開發(fā)過程中被發(fā)現(xiàn)。
而 docker 的鏡像提供了除內(nèi) 核外完整的運(yùn)行時(shí)環(huán)境,確保了應(yīng)用運(yùn)行環(huán)境一致性,從而不會(huì)再出現(xiàn) “這段代碼 在我機(jī)器上沒問題啊” 這類問題。
4. 持續(xù)交付和部署
對(duì)開發(fā)和運(yùn)維(devops)人員來說,最希望的就是一次創(chuàng)建或配置,可以在任意 地方正常運(yùn)行。
使用 docker 可以通過定制應(yīng)用鏡像來實(shí)現(xiàn)持續(xù)集成、持續(xù)交付、部署。開發(fā)人員 可以通過 dockerfile 來進(jìn)行鏡像構(gòu)建,并結(jié)合 持續(xù)集成(continuous integration) 系 統(tǒng)進(jìn)行集成測試,
而運(yùn)維人員則可以直接在生產(chǎn)環(huán)境中快速部署該鏡像,甚至結(jié)合 持續(xù)部署(continuous delivery/deployment) 系統(tǒng)進(jìn)行自動(dòng)部署。
而且使用 dockerfile 使鏡像構(gòu)建透明化,不僅僅開發(fā)團(tuán)隊(duì)可以理解應(yīng)用運(yùn)行環(huán) 境,也方便運(yùn)維團(tuán)隊(duì)理解應(yīng)用運(yùn)行所需條件,幫助更好的生產(chǎn)環(huán)境中部署該鏡像。
5. 更輕松的遷移
由于 docker 確保了執(zhí)行環(huán)境的一致性,使得應(yīng)用的遷移更加容易。docker 可以在 很多平臺(tái)上運(yùn)行,無論是物理機(jī)、虛擬機(jī)、公有云、私有云,甚至是筆記本,其運(yùn) 行結(jié)果是一致的。
因此用戶可以很輕易的將在一個(gè)平臺(tái)上運(yùn)行的應(yīng)用,遷移到另一 個(gè)平臺(tái)上,而不用擔(dān)心運(yùn)行環(huán)境的變化導(dǎo)致應(yīng)用無法正常運(yùn)行的情況。
系統(tǒng)環(huán)境:docker最低支持centos7且在64位平臺(tái)上,內(nèi)核版本在3.10以上
版本:社區(qū)版,企業(yè)版(包含了一些收費(fèi)服務(wù))
博主版安裝教程:
# 安裝docker yum install docker # 啟動(dòng)docker systemctl start/status docker # 查看docker啟動(dòng)狀態(tài) docker version
配置加速器
簡介:daocloud 加速器是廣受歡迎的 docker 工具,解決了國內(nèi)用戶訪問 docker hub 緩慢的問題。daocloud 加速器結(jié)合國內(nèi)的 cdn 服務(wù)與協(xié)議層優(yōu)化,成倍的提升了下載速度。
daocloud官網(wǎng)
# 一條命令加速(記得重啟docker) curl -ssl https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://95822026.m.daocloud.io
docker --help(中文注解)
usage: docker [options] command [arg...] docker daemon [ --help | ... ] docker [ --help | -v | --version ] a self-sufficient runtime for containers. options: --config=~/.docker location of client config files #客戶端配置文件的位置 -d, --debug=false enable debug mode #啟用debug調(diào)試模式 -h, --host=[] daemon socket(s) to connect to #守護(hù)進(jìn)程的套接字(socket)連接 -h, --help=false print usage #打印使用 -l, --log-level=info set the logging level #設(shè)置日志級(jí)別 --tls=false use tls; implied by--tlsverify # --tlscacert=~/.docker/ca.pem trust certs signed only by this ca #信任證書簽名ca --tlscert=~/.docker/cert.pem path to tls certificate file #tls證書文件路徑 --tlskey=~/.docker/key.pem path to tls key file #tls密鑰文件路徑 --tlsverify=false use tls and verify the remote #使用tls驗(yàn)證遠(yuǎn)程 -v, --version=false print version information and quit #打印版本信息并退出 commands: attach attach to a running container #當(dāng)前shell下attach連接指定運(yùn)行鏡像 build build an image from a dockerfile #通過dockerfile定制鏡像 commit create a new image from a container's changes #提交當(dāng)前容器為新的鏡像 cp copy files/folders from a container to a hostdir or to stdout #從容器中拷貝指定文件或者目錄到宿主機(jī)中 create create a new container #創(chuàng)建一個(gè)新的容器,同run 但不啟動(dòng)容器 diff inspect changes on a container's filesystem #查看docker容器變化 events get real time events from the server#從docker服務(wù)獲取容器實(shí)時(shí)事件 exec run a command in a running container#在已存在的容器上運(yùn)行命令 export export a container's filesystem as a tar archive #導(dǎo)出容器的內(nèi)容流作為一個(gè)tar歸檔文件(對(duì)應(yīng)import) history show the history of an image #展示一個(gè)鏡像形成歷史 images list images #列出系統(tǒng)當(dāng)前鏡像 import import the contents from a tarball to create a filesystem image #從tar包中的內(nèi)容創(chuàng)建一個(gè)新的文件系統(tǒng)映像(對(duì)應(yīng)export) info display system-wide information #顯示系統(tǒng)相關(guān)信息 inspect return low-level information on a container or image #查看容器詳細(xì)信息 kill kill a running container #kill指定docker容器 load load an image from a tar archive or stdin #從一個(gè)tar包中加載一個(gè)鏡像(對(duì)應(yīng)save) login register or log in to a docker registry#注冊(cè)或者登陸一個(gè)docker源服務(wù)器 logout log out from a docker registry #從當(dāng)前docker registry退出 logs fetch the logs of a container #輸出當(dāng)前容器日志信息 pause pause all processes within a container#暫停容器 port list port mappings or a specific mapping for the container #查看映射端口對(duì)應(yīng)的容器內(nèi)部源端口 ps list containers #列出容器列表 pull pull an image or a repository from a registry #從docker鏡像源服務(wù)器拉取指定鏡像或者庫鏡像 push push an image or a repository to a registry #推送指定鏡像或者庫鏡像至docker源服務(wù)器 rename rename a container #重命名容器 restart restart a running container #重啟運(yùn)行的容器 rm remove one or more containers #移除一個(gè)或者多個(gè)容器 rmi remove one or more images #移除一個(gè)或多個(gè)鏡像(無容器使用該鏡像才可以刪除,否則需要?jiǎng)h除相關(guān)容器才可以繼續(xù)或者-f強(qiáng)制刪除) run run a command in a new container #創(chuàng)建一個(gè)新的容器并運(yùn)行一個(gè)命令 save save an image(s) to a tar archive#保存一個(gè)鏡像為一個(gè)tar包(對(duì)應(yīng)load) search search the docker hub for images #在docker hub中搜索鏡像 start start one or more stopped containers#啟動(dòng)容器 stats display a live stream of container(s) resource usage statistics #統(tǒng)計(jì)容器使用資源 stop stop a running container #停止容器 tag tag an image into a repository #給源中鏡像打標(biāo)簽 top display the running processes of a container #查看容器中運(yùn)行的進(jìn)程信息 unpause unpause all processes within a container #取消暫停容器 version show the docker version information#查看容器版本號(hào) wait block until a container stops, then print its exit code #截取容器停止時(shí)的退出狀態(tài)值 run 'docker command --help' for more information on a command. #運(yùn)行docker命令在幫助可以獲取更多信息
docker search hello-docker # 搜索hello-docker的鏡像 docker search centos # 搜索centos鏡像 docker pull hello-docker # 獲取centos鏡像 docker run hello-world #運(yùn)行一個(gè)docker鏡像,產(chǎn)生一個(gè)容器實(shí)例(也可以通過鏡像id前三位運(yùn)行) docker image ls # 查看本地所有鏡像 docker images # 查看docker鏡像 docker image rmi hello-docker # 刪除centos鏡像 docker ps #列出正在運(yùn)行的容器(如果創(chuàng)建容器中沒有進(jìn)程正在運(yùn)行,容器就會(huì)立即停止) docker ps -a # 列出所有運(yùn)行過的容器記錄 docker save centos > /opt/centos.tar.gz # 導(dǎo)出docker鏡像至本地 docker load < /opt/centos.tar.gz #導(dǎo)入本地鏡像到docker鏡像庫 docker stop `docker ps -aq` # 停止所有正在運(yùn)行的容器 docker rm `docker ps -aq` # 一次性刪除所有容器記錄 docker rmi `docker images -aq` # 一次性刪除所有本地的鏡像記錄
3.1 啟動(dòng)容器的兩種方式
容器是運(yùn)行應(yīng)用程序的,所以必須得先有一個(gè)操作系統(tǒng)為基礎(chǔ)
1. 基于鏡像新建一個(gè)容器并啟動(dòng)
# 1. 后臺(tái)運(yùn)行一個(gè)docker docker run -d centos /bin/sh -c "while true;do echo 正在運(yùn)行; sleep 1;done" # -d 后臺(tái)運(yùn)行容器 # /bin/sh 指定使用centos的bash解釋器 # -c 運(yùn)行一段shell命令 # "while true;do echo 正在運(yùn)行; sleep 1;done" 在linux后臺(tái),每秒中打印一次正在運(yùn)行 docker ps # 檢查容器進(jìn)程 docker logs -f 容器id/名稱 # 不間斷打印容器的日志信息 docker stop centos # 停止容器 # 2. 啟動(dòng)一個(gè)bash終端,允許用戶進(jìn)行交互 docker run --name mydocker -it centos /bin/bash # --name 給容器定義一個(gè)名稱 # -i 讓容器的標(biāo)準(zhǔn)輸入保持打開 # -t 讓docker分配一個(gè)偽終端,并綁定到容器的標(biāo)準(zhǔn)輸入上 # /bin/bash 指定docker容器,用shell解釋器交互
當(dāng)利用docker run來創(chuàng)建容器時(shí),docker在后臺(tái)運(yùn)行的步驟如下:
# 1. 檢查本地是否存在指定的鏡像,不存在就從公有倉庫下載
# 2. 利用鏡像創(chuàng)建并啟動(dòng)一個(gè)容器
# 3. 分配一個(gè)文件系統(tǒng),并在只讀的鏡像層外面掛在一層可讀寫層
# 4. 從宿主主機(jī)配置的網(wǎng)橋接口中橋接一個(gè)虛擬接口到容器中去
# 5. 從地址池配置一個(gè)ip地址給容器
# 6. 執(zhí)行用戶指定的應(yīng)用程序
# 7. 執(zhí)行完畢后容器被終止
2.將一個(gè)終止?fàn)顟B(tài)(stopped)的容器重新啟動(dòng)
[root@localhost ~]# docker ps -a # 先查詢記錄 container id image command created status ports names ee92fcf6f32d centos "/bin/bash" 4 days ago exited (137) 3 days ago kickass_raman [root@localhost ~]# docker start ee9 # 再啟動(dòng)這個(gè)容器 ee9 [root@localhost ~]# docker exec -it ee9 /bin/bash # 進(jìn)入容器交互式界面 [root@ee92fcf6f32d /]# # 注意看用戶名,已經(jīng)變成容器用戶名
3.2提交創(chuàng)建自定義鏡像
# 1.我們進(jìn)入交互式的centos容器中,發(fā)現(xiàn)沒有vim命令 docker run -it centos # 2.在當(dāng)前容器中,安裝一個(gè)vim yum install -y vim # 3.安裝好vim之后,exit退出容器 exit # 4.查看剛才安裝好vim的容器記錄 docker container ls -a # 5.提交這個(gè)容器,創(chuàng)建新的image docker commit 059fdea031ba chaoyu/centos-vim # 6.查看鏡像文件 docker images repository tag image id created size chaoyu/centos-vim latest fd2685ae25fe 5 minutes ago 348mb
3.3外部訪問容器
容器中可以運(yùn)行網(wǎng)絡(luò)應(yīng)用,但是要讓外部也可以訪問這些應(yīng)用,可以通過-p或-p參數(shù)指定端口映射。
docker run -d -p training/webapp python app.py # -p 參數(shù)會(huì)隨機(jī)映射端口到容器開放的網(wǎng)絡(luò)端口 # 檢查映射的端口 docker ps -l container id image command created status ports names cfd632821d7a training/webapp "python app.py" 21 seconds ago up 20 seconds 0.0.0.0:32768->5000/tcp brave_fermi #宿主機(jī)ip:32768 映射容器的5000端口 # 查看容器日志信息 docker logs -f cfd # #不間斷顯示log # 也可以通過-p參數(shù)指定映射端口 docker run -d -p 9000:5000 training/webapp python app.py
打開瀏覽器訪問服務(wù)器的9000端口, 內(nèi)容顯示 hello world!表示正常啟動(dòng)
(如果訪問失敗的話,檢查自己的防火墻,以及云服務(wù)器的安全組)
鏡像是容器的基礎(chǔ),每次執(zhí)行docker run的時(shí)候都會(huì)指定哪個(gè)鏡像作為容器運(yùn)行的基礎(chǔ)。我們之前的例子都是使用來自docker hub的鏡像,直接使用這些鏡像只能滿足一定的需求,當(dāng)鏡像無法滿足我們的需求時(shí),就得自定制這些鏡像。
鏡像的定制就是定制每一層所添加的配置、文件。如果可以吧每一層修改、安裝、構(gòu)建、操作的命令都寫入到一個(gè)腳本,用腳本來構(gòu)建、定制鏡像,這個(gè)腳本就是dockerfile。
dockerfile 是一個(gè)文本文件,其內(nèi)包含了一條條的指令(instruction),每一條指令 構(gòu)建一層,因此每一條指令的內(nèi)容,就是描述該層應(yīng)當(dāng)如何構(gòu)建。
參數(shù)詳解
from scratch #制作base image 基礎(chǔ)鏡像,盡量使用官方的image作為base image from centos #使用base image from ubuntu:14.04 #帶有tag的base image label version=“1.0” #容器元信息,幫助信息,metadata,類似于代碼注釋 label maintainer=“yc_uuu@163.com" #對(duì)于復(fù)雜的run命令,避免無用的分層,多條命令用反斜線換行,合成一條命令! run yum update && yum install -y vim \ python-dev #反斜線換行 run /bin/bash -c "source $home/.bashrc;echo $home” workdir /root #相當(dāng)于linux的cd命令,改變目錄,盡量使用絕對(duì)路徑?。?!不要用run cd workdir /test # 如果沒有就自動(dòng)創(chuàng)建 workdir demo # 再進(jìn)入demo文件夾 run pwd # 打印結(jié)果應(yīng)該是/test/demo add and copy add hello / # 把本地文件添加到鏡像中,吧本地的hello可執(zhí)行文件拷貝到鏡像的/目錄 add test.tar.gz / # 添加到根目錄并解壓 workdir /root add hello test/ # 進(jìn)入/root/ 添加hello可執(zhí)行命令到test目錄下,也就是/root/test/hello 一個(gè)絕對(duì)路徑 copy hello test/ # 等同于上述add效果 add與copy - 優(yōu)先使用copy命令 -add除了copy功能還有解壓功能 添加遠(yuǎn)程文件/目錄使用curl或wget env # 環(huán)境變量,盡可能使用env增加可維護(hù)性 env mysql_version 5.6 # 設(shè)置一個(gè)mysql常量 run yum install -y mysql-server=“${mysql_version}”
進(jìn)階只是(了解)
volume and expose
存儲(chǔ)和網(wǎng)絡(luò)run and cmd and entrypoint
run:執(zhí)行命令并創(chuàng)建新的image layer
cmd:設(shè)置容器啟動(dòng)后默認(rèn)執(zhí)行的命令和參數(shù)
entrypoint:設(shè)置容器啟動(dòng)時(shí)運(yùn)行的命令shell格式和exec格式
run yum install -y vim
cmd echo ”hello docker”
entrypoint echo “hello docker”exec格式
run [“apt-get”,”install”,”-y”,”vim”]
cmd [“/bin/echo”,”hello docker”]
entrypoint [“/bin/echo”,”hello docker”]
通過shell格式去運(yùn)行命令,會(huì)讀取$name指令,而exec格式是僅僅的執(zhí)行一個(gè)命令,而不是shell指令
cat dockerfile
from centos
env name docker
entrypoint [“/bin/echo”,”hello $name”]#這個(gè)僅僅是執(zhí)行echo命令,讀取不了shell變量
entrypoint [“/bin/bash”,”-c”,”echo hello $name"]cmd
容器啟動(dòng)時(shí)默認(rèn)執(zhí)行的命令
如果docker run指定了其他命令(docker run -it [image] /bin/bash ),cmd命令被忽略
如果定義多個(gè)cmd,只有最后一個(gè)執(zhí)行entrypoint
讓容器以應(yīng)用程序或服務(wù)形式運(yùn)行
不會(huì)被忽略,一定會(huì)執(zhí)行
最佳實(shí)踐:寫一個(gè)shell腳本作為entrypoint
copy docker-entrypoint.sh /usr/local/bin
entrypoint [“docker-entrypoint.sh]
expose 27017
cmd [“mongod”][root@master home]# more dockerfile
from centos
env name docker
#cmd ["/bin/bash","-c","echo hello $name"]
entrypoint ["/bin/bash","-c","echo hello $name”]
1,docker hub共有鏡像發(fā)布
docker提供了一個(gè)類似于github的倉庫docker hub,
(需注冊(cè)使用)
# 注冊(cè)docker id后,在linux中登錄dockerhub docker login # 注意要保證image的tag是賬戶名,如果鏡像名字不對(duì),需要改一下tag docker tag chaoyu/centos-vim peng104/centos-vim # 語法是: docker tag 倉庫名 peng104/倉庫名 # 推送docker image到dockerhub docker push peng104/centps-cmd-exec:latest # 去dockerhub中檢查鏡像 # 先刪除本地鏡像,然后再測試下載pull 鏡像文件 docker pull peng104/centos-entrypoint-exec
2,私有倉庫
docker hub 是公開的,其他人也是可以下載,并不安全,因此還可以使用docker registry官方提供的私有倉庫
# 1.下載一個(gè)docker官方私有倉庫鏡像 docker pull registry # 2.運(yùn)行一個(gè)docker私有容器倉庫 docker run -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry registry -d 后臺(tái)運(yùn)行 -p 端口映射 宿主機(jī)的5000:容器內(nèi)的5000 -v 數(shù)據(jù)卷掛載 宿主機(jī)的 /opt/data/registry :/var/lib/registry registry 鏡像名 /var/lib/registry 存放私有倉庫位置 # docker 默認(rèn)不允許非 https 方式推送鏡像。我們可以通過 docker 的配置選項(xiàng)來取消這個(gè)限制 # 3.修改docker的配置文件,讓他支持http方式,上傳私有鏡像 vim /etc/docker/daemon.json # 寫入如下內(nèi)容 { "registry-mirrors": ["http://f1361db2.m.daocloud.io"], "insecure-registries":["192.168.11.37:5000"] } # 4.修改docker的服務(wù)配置文件 vim /lib/systemd/system/docker.service # 找到[service]這一代碼區(qū)域塊,寫入如下參數(shù) [service] environmentfile=-/etc/docker/daemon.json # 5.重新加載docker服務(wù) systemctl daemon-reload # 6.重啟docker服務(wù) systemctl restart docker # 注意:重啟docker服務(wù),所有的容器都會(huì)掛掉 # 7.修改本地鏡像的tag標(biāo)記,往自己的私有倉庫推送 docker tag docker.io/peng104/hello-world-docker 192.168.11.37:5000/peng-hello # 瀏覽器訪問http://192.168.119.10:5000/v2/_catalog查看倉庫 # 8.下載私有倉庫的鏡像 docker pull 192.168.11.37:5000/peng-hello
編寫dockerfile,構(gòu)建自己的鏡像,運(yùn)行flask程序。
確保app.py和dockerfile在同一個(gè)目錄!
# 1.準(zhǔn)備好app.py的flask程序 [root@localhost ~]# cat app.py from flask import flask app=flask(__name__) @app.route('/') def hello(): return "hello docker" if __name__=="__main__": app.run(host='0.0.0.0',port=8080) [root@master home]# ls app.py dockerfile # 2.編寫dockerfile [root@localhost ~]# cat dockerfile from python:2.7 label maintainer="溫而新" run pip install flask copy app.py /app/ workdir /app expose 8080 cmd ["python","app.py"] # 3.構(gòu)建鏡像image,找到當(dāng)前目錄的dockerfile,開始構(gòu)建 docker build -t peng104/flask-hello-docker . # 4.查看創(chuàng)建好的images docker image ls # 5.啟動(dòng)此flask-hello-docker容器,映射一個(gè)端口供外部訪問 docker run -d -p 8080:8080 peng104/flask-hello-docker # 6.檢查運(yùn)行的容器 docker container ls # 7.推送這個(gè)鏡像到私有倉庫 docker tag peng104/flask-hello-docker 192.168.11.37:5000/peng-flaskweb docker push 192.168.11.37:5000/peng-flaskweb
感謝各位的閱讀,以上就是“docker的基礎(chǔ)命令有哪些”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)docker的基礎(chǔ)命令有哪些這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。